मूल पोस्टर में कहा गया है:
सबसे अच्छा जवाब कोई मुझे दे सकता है git revert
जब तक कि मैं वांछित प्रतिबद्धता तक नहीं पहुंच गया।
तो हम कहते हैं कि मैं एक कमिट पर वापस जाना चाहता हूं जो 20 साल पुराना है, मुझे इसे 20 बार चलाना होगा।
क्या इसे करने का कोई आसान रास्ता है?
मैं रीसेट का उपयोग नहीं कर सकता क्योंकि यह रेपो सार्वजनिक है।
git revert
एक्स का उपयोग करना आवश्यक नहीं है । git revert
एक तर्क के रूप में एक प्रतिबद्ध सीमा को स्वीकार कर सकते हैं, इसलिए आपको केवल एक बार कमिट्स को वापस करने के लिए इसका उपयोग करने की आवश्यकता है। उदाहरण के लिए, यदि आप पिछले 20 कमिट्स को वापस करना चाहते हैं:
git revert --no-edit HEAD~20..
प्रतिबद्ध सीमा HEAD~20..
कम है HEAD~20..HEAD
, और इसका मतलब है " हेड के 20 वें माता-पिता से शुरू करें, और एचएएडी तक आने के बाद सभी कमिट्स को वापस कर दें"।
पिछले 20 कमिट्स को यह कहते हुए वापस कर दिया जाएगा कि उनमें से कोई भी मर्ज कमिट नहीं है। यदि मर्ज कमिट हैं, तो आप उन सभी को एक आदेश में वापस नहीं ला सकते हैं, आपको उन्हें अलग-अलग के साथ वापस करना होगा
git revert -m 1 <merge-commit>
यह भी ध्यान दें कि मैंने git revert
git संस्करण 1.9.0 का उपयोग करके एक श्रेणी का उपयोग करके परीक्षण किया है । यदि आप git के पुराने संस्करण का उपयोग कर रहे हैं, तो किसी श्रेणी के साथ git revert
काम कर सकते हैं या नहीं कर सकते हैं।
इस मामले में, git revert
अधिक पसंद किया जाता है git checkout
।
ध्यान दें कि इस उत्तर केgit checkout
विपरीत जो उपयोग करने के लिए कहता है , git revert
वास्तव में किसी भी फाइल को हटा देगा जो आपके द्वारा किए जा रहे किसी भी कमिट में जोड़ी गई थी , जो कई प्रकार के संशोधनों को वापस करने का सही तरीका है।
प्रलेखन