2013-03-26 17 views
6

ए फीचर-विशिष्ट शाखा ('विकास' शाखा से) पर काम करते समय, मैंने गलत दृष्टिकोण (कुछ बार: /) लिया और अनिवार्य रूप से सभी को हटाना चाहते हैं मेरी वर्तमान प्रतिबद्धता से पहले मैं इस शाखा पर काम करता हूं।गिट रिबेस इंटरैक्टिव

इस प्रकार की स्थिति में पहले मैंने जो किया है वह git rebase -i development करना है और मैं इसे रखने के पहले सभी को छोड़ देता हूं (सबसे वर्तमान) और फिर रिमोट रेपो को अपडेट करने के लिए एक गिट पुश - फोर्स करें केवल मेरी सबसे हालिया सुनहरी प्रतिबद्धता रखने के लिए।

ऐसा करने के बाद, जब मेरे लिए इस रीबेज प्रतिबद्धता के लिए परिवर्तन करने का समय लगता है, तो ऐसा लगता है कि गिट मेरे अनुरोध के लिए थोड़ा अजीब प्रतिक्रिया दे रहा है। ऐसी कुछ फाइलें हैं जो

both modified:  app/helpers/statistics_helper.rb 
deleted by us:  app/models/referrals/chart.rb 
deleted by us:  app/views/statistics/_referrals.html.haml 
deleted by us:  app/views/statistics/_referrals2.html.haml 
deleted by us:  app/views/statistics/_referrals3.html.haml 

मुझे नहीं पता कि इसका जवाब कैसे दिया जाए। अगर मैं git add फाइलें जो "हमारे द्वारा हटाए गए" से पहले हैं, तो क्या यह इन फ़ाइलों को हटा देगा?

उत्तर

1

प्रतिबद्धताओं को हटाकर ऐसा लगता है जैसे वे कभी नहीं हुए। इसलिए यदि आपने पिछली प्रतिबद्धताओं में कोई भी फाइल जोड़ी है, तो उन्हें हटा दिया गया था, उन फ़ाइलों को भी हटा दिया जाएगा। शायद यह है कि आप उस संदेश को देख रहे हैं। यह शायद आपके अंतिम परिणाम के हिस्से के रूप में इच्छित पूर्ववर्ती फ़ाइलों में परिवर्तनों को भी हटा देगा। मुझे लगता है कि आप गलत तरीके से रीबेज का उपयोग कर रहे हैं।

यदि आपके आखिरी प्रतिबद्धता के अंत में सबकुछ राज्य में है, तो आप चाहते हैं कि आप इसे स्क्वैश इसके बजाय अपना अंतिम काम करना चाहिए। आप इसे दो तरीकों से कर सकते हैं। rebase -i का उपयोग करके आपने s या squash को edit के बजाय सभी प्रतिबद्ध लाइनों के लिए पहली बार छोड़कर निर्दिष्ट किया है।

अन्य तरीके से करना यह होगा:

git reset --soft HEAD~<N> 
git commit 

कहाँ <N> प्रतिबद्ध की संख्या वापस आप छुटकारा पाने के लिए की जरूरत है।

संबंधित मुद्दे