मूल पोस्टर में कहा गया है:
सबसे अच्छा जवाब कोई मुझे दे सकता है 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 revertgit संस्करण 1.9.0 का उपयोग करके एक श्रेणी का उपयोग करके परीक्षण किया है । यदि आप git के पुराने संस्करण का उपयोग कर रहे हैं, तो किसी श्रेणी के साथ git revertकाम कर सकते हैं या नहीं कर सकते हैं।
इस मामले में, git revertअधिक पसंद किया जाता है git checkout।
ध्यान दें कि इस उत्तर केgit checkout विपरीत जो उपयोग करने के लिए कहता है , git revert
वास्तव में किसी भी फाइल को हटा देगा जो आपके द्वारा किए जा रहे किसी भी कमिट में जोड़ी गई थी , जो कई प्रकार के संशोधनों को वापस करने का सही तरीका है।
प्रलेखन