मैंने आज भी वही किया, और छेड़छाड़ से ठीक पहले राज्य में वापस आने के लिए एक अलग दृष्टिकोण (परीक्षण और त्रुटि के बाद) लिया ताकि मैं संघर्षों को हल करना जारी रख सकूं और विलय को पूरा कर सकूं।
सबसे पहले, गंतव्य शाखा में आंशिक विलय को खोलने के बाद, मैंने शेष विवादों (टेक्स्ट फ़ाइल या संपादक टैब) वाली फ़ाइलों की एक सूची पर कब्जा कर लिया। अनस्टैशिंग के बाद यह केवल अस्थिर फ़ाइलों की सूची है, क्योंकि पहले से हल किए गए विवादों वाली फ़ाइलों को छेड़छाड़ से पहले चरणबद्ध किया गया था।
$ git status
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myproject/src/main/java/com/acme/package3/Class3.java
# modified: myproject/src/main/java/com/acme/package3/Class4.java
#
इसके बाद, मैं एक पैच बनाया है और शाखा वापस पूर्व मर्ज स्थिति में रीसेट:
$ git diff HEAD > ~/merge-with-resolved-conflicts.patch
$ git reset --hard HEAD
तो मैं एक अस्थायी शाखा (मर्ज गंतव्य शाखा से प्राप्त) बनाया है, और लागू किया पैच:
$ git checkout -b my-temp-branch
$ git apply ~/merge-with-resolved-conflicts.patch
$ git commit -a -m "Merge with resolved conflicts"
तो मेरी-अस्थायी शाखा के सिर अब सब कुछ है कि शेष संघर्ष के साथ हल संघर्षों के साथ फ़ाइलें, और फ़ाइलों सहित विलय कर दिया गया था, शामिल हैं।
तो मैं मूल शाखा में वापस स्विच, फिर से विलय कर दिया, और Git स्थिति
$ git checkout my-branch
$ git merge other-branch
$ git status
को देखा स्थिति संघर्षों के साथ फ़ाइलों की पूरी सूची दिखाता है:
# Unmerged paths:
# (use "git add <file>..." to mark resolution)
#
# both modified: myproject/src/main/java/com/acme/package1/Class1.java
# both modified: myproject/src/main/java/com/acme/package2/Class2.java
# both modified: myproject/src/main/java/com/acme/package3/Class3.java
# both modified: myproject/src/main/java/com/acme/package3/Class4.java
#
अब मैं करने के लिए आवश्यक फ़ाइलों की इन दो सूचियों की तुलना करें। दूसरी सूची में कोई भी फाइल लेकिन पहले नहीं पहले ही हल हो चुकी है (इस उदाहरण में, कक्षा 1.जावा और कक्षा 2.जावा)। उन फ़ाइलों में से प्रत्येक के लिए तो, मैं अस्थायी शाखा से हल हो गई संघर्षों के साथ संस्करण में खींच लिया (जैसे चेरी ले, लेकिन एक पूरे के बजाय अलग-अलग फ़ाइलों के लिए प्रतिबद्ध):
$ git checkout my-temp-branch myproject/src/main/java/com/acme/package1/Class1.java
$ git checkout my-temp-branch myproject/src/main/java/com/acme/package2/Class2.java
यह किया है, मैं वापस आ गया था छेड़छाड़ से पहले राज्य में, इसलिए मैं शेष संघर्षों को हल करने और विलय करने के लिए फिर से शुरू कर सकता था।
क्या आप वास्तव में कुछ भी महत्वपूर्ण करते थे? (क्या आपको वास्तव में स्टैश किए गए परिवर्तनों को पुनर्स्थापित करने की आवश्यकता है?) क्या आप अभी कोशिश किए गए विलय को रीसेट कर सकते हैं, और इसे फिर से कर सकते हैं? – Cascabel
क्रमशः हाँ और नहीं। परिवर्तन विवाद समाधान के विलय के एक से अधिक दिनों से होते हैं। – bukzor
@ बुकर: यदि आपको विवाद समाधान के विलय के लिए एक दिन की आवश्यकता है तो शाखा शाखा प्रबंधन और कार्य वितरण (या आवृत्ति मर्ज) के संबंध में आपकी नीतियों पर पुनर्विचार करने का समय हो सकता है। इस तरह के लंबे विलय संकल्प बाद में एक प्रतिबद्ध – Grizzly