संघर्ष के साथ एक मर्ज को पूर्ववत कैसे करें


785

मैं शाखा पर हूं mybranch1mybranch2से कांटा गया है mybranch1और इसमें परिवर्तन किए गए हैं mybranch2

फिर, जबकि mybranch1मैंने किया है, git merge --no-commit mybranch2 यह दिखाता है कि विलय के समय संघर्ष थे।

अब मैं सब कुछ ( mergeआदेश) को त्याग देना चाहता हूं ताकि जो mybranch1पहले था वह वापस आ जाए। मुझे नहीं पता कि मैं इस बारे में कैसे जाऊं।


जवाबों:


1355

नवीनतम गिट:

git merge --abort

यह आपकी कार्यशील प्रतिलिपि को मर्ज करने से पहले जो भी स्थिति में था, उसे रीसेट करने का प्रयास करता है। इसका मतलब यह है कि इसे विलय से पहले किसी भी तरह के बदलाव को बहाल करना चाहिए, हालांकि यह हमेशा मज़बूती से ऐसा नहीं कर सकता है। आम तौर पर आपको वैसे भी बिना परिवर्तन किए हुए परिवर्तनों के साथ विलय नहीं करना चाहिए।

संस्करण 1.7.4 से पहले:

git reset --merge

यह पुराना सिंटैक्स है लेकिन ऊपर जैसा है वैसा ही करता है।

संस्करण 1.6.2 से पहले:

git reset --hard

जो बिना विलय किए गए सभी परिवर्तनों को हटा देता है, जिसमें संयुक्त राज्य में विलय भी शामिल है। कभी-कभी यह व्यवहार Git के नए संस्करणों में भी उपयोगी होता है जो उपरोक्त आदेशों का समर्थन करते हैं।


1
लेकिन गिट के पुराने संस्करणों के लिए यह उपयोग करने का तरीका है
अंशुल

7
कभी-कभी आपको अभी git reset --mergeभी अधिक हाल के संस्करणों में उपयोग करने की आवश्यकता होती है । मेरे पास git merge --abortत्रुटि है (कोई परिवर्तन नहीं) जहां git reset --mergeसफल होता है (और सही काम करता है) 2.2.1 में।
थियोडोर मर्डॉक

मैंने पाया मैं करने के लिए आवश्यक git merge --abortके बाद git reset --mergeजब मेरे गुप्त कोष पॉपिंग से automerge संघर्ष कर रहे हैं।
शेफ फिरौन

1
आमतौर पर git merge --abortमेरे लिए काम करता है, हालांकि मैंने खुद को एक ऐसी स्थिति में पाया जहां मैंने एक अलग राज्य में जांच की, और मेरी एक फाइल में "दोनों संशोधित" स्थिति थी। मैं सब कुछ त्यागकर एक शाखा में वापस जाना चाहता था git reset --hard, git merge --abortमुझे बताया गया था , मुझे गर्भपात करने के लिए कोई मर्ज नहीं था, (MERGE_HEAD लापता)।
yano

कभी-कभी git merge --abortआप अपनी पिछली स्थिति को वापस लाने में सक्षम नहीं होते हैं, और उस स्थिति में "पुराने सिंटैक्स" git reset --hardट्रिक करता है।
केविन स्टीवर्ट

130

वास्तव में, यह ध्यान देने योग्य git merge --abortहै git reset --mergeकि MERGE_HEADवर्तमान में दिए गए के बराबर है। यह मर्ज कमांड के लिए git सहायता में पढ़ा जा सकता है।

git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

एक असफल मर्ज के बाद, जब कोई नहीं होता है MERGE_HEAD, तो असफल मर्ज को पूर्ववत किया जा सकता है, git reset --mergeलेकिन जरूरी नहीं कि साथ ही git merge --abort, इसलिए वे केवल एक ही चीज़ के लिए पुराने और नए सिंटैक्स नहीं हैं

व्यक्तिगत रूप से मुझे git reset --mergeरोजमर्रा के काम में बहुत अधिक उपयोगी लगता है ।


2
धन्यवाद, यह जानकारी बहुत उपयोगी थी। मेरे पास एक मर्ज था जो git stash applyएक गलत शाखा पर शुरू हुआ , और git merge --abortकुछ नहीं (नहीं MERGE_HEAD) किया, जबकि git reset --mergeचाल चली।
जियोमास्टर

4
मैंने लगभग 10 लोगों को यह कहते हुए देखा है कि git merge --abortयह नया कमांड है git reset --mergeऔर मैं @geomaster जैसे ही मुद्दे में भाग गया यह सुपर उपयोगी था धन्यवाद!
टॉम

106

मान लें कि आप नवीनतम git का उपयोग कर रहे हैं,

git merge --abort

ठीक है, यह 1.7.0.7 के साथ काम नहीं करता है :(। इसके साथ रीसेट का उपयोग करने के लिए मिला
अंशुल

5

दो चीजें हैं जो आप कमांड द्वारा पहले पूर्ववत मर्ज कर सकते हैं

git merge --abort

या

आप अस्थायी रूप से अपने पिछले प्रतिबद्ध राज्य में जा सकते हैं

git checkout 0d1d7fc32 

0

Sourcetree

यदि आप अपना मर्ज नहीं करते हैं, तो बस दूसरी शाखा (= चेकआउट) पर डबल क्लिक करें और जब sourcetree आपसे सभी परिवर्तनों को त्यागने के बारे में पूछे तो सहमत

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.