चुनिंदा रूप से फ़ाइलों को एक शाखा से दूसरी शाखा में मर्ज करने के लिए, चलाएं
git merge --no-ff --no-commit branchX
branchX
वह शाखा कहां है जिसे आप वर्तमान शाखा में विलय करना चाहते हैं।
--no-commit
विकल्प वास्तव में उन्हें करने के बिना फ़ाइलों को Git से मिला दिया गया मंच होगा। यह आपको मर्ज की गई फ़ाइलों को संशोधित करने का अवसर देगा, जो आप चाहते हैं और फिर उन्हें स्वयं करें।
आप फ़ाइलों को कैसे मर्ज करना चाहते हैं, इसके आधार पर, चार मामले हैं:
1) आप एक सही मर्ज चाहते हैं।
इस स्थिति में, आप मर्ज किए गए फ़ाइलों को स्वीकार करते हैं जिस तरह से Git ने उन्हें स्वचालित रूप से मर्ज किया और फिर उन्हें प्रतिबद्ध किया।
2) कुछ फाइलें हैं जिन्हें आप मर्ज नहीं करना चाहते हैं।
उदाहरण के लिए, आप वर्तमान शाखा में संस्करण को बनाए रखना चाहते हैं और जिस शाखा से आप विलय कर रहे हैं, उस संस्करण की उपेक्षा करें।
वर्तमान शाखा में संस्करण का चयन करने के लिए, दौड़ें:
git checkout HEAD file1
यह file1
वर्तमान शाखा के संस्करण को पुनः प्राप्त करेगा और file1
गिट द्वारा ऑटोमैटरेड को अधिलेखित करेगा ।
3) यदि आप ब्रांच में संस्करण चाहते हैं (और एक सही मर्ज नहीं)।
Daud:
git checkout branchX file1
इस के संस्करण प्राप्त करेंगे file1
में branchX
और अधिलेखित file1
Git रूप से स्वत: विलय कर दिया।
4) आखिरी मामला यह है कि क्या आप केवल विशिष्ट मर्ज का चयन करना चाहते हैं file1
।
इस स्थिति में, आप file1
सीधे संशोधित कर सकते हैं, इसे अपडेट कर सकते हैं जो भी आप चाहते हैं कि संस्करण file1
बन जाए, और फिर प्रतिबद्ध हो।
यदि Git स्वचालित रूप से किसी फ़ाइल को मर्ज नहीं कर सकता है, तो यह फ़ाइल को " अनमैरिड " के रूप में रिपोर्ट करेगा और एक प्रति उत्पन्न करेगा जहाँ आपको मैन्युअल रूप से विरोधों को हल करने की आवश्यकता होगी।
एक उदाहरण के साथ आगे समझाने के लिए, मान लें कि आप branchX
वर्तमान शाखा में विलय करना चाहते हैं :
git merge --no-ff --no-commit branchX
फिर आप git status
संशोधित फ़ाइलों की स्थिति देखने के लिए कमांड चलाते हैं ।
उदाहरण के लिए:
git status
# On branch master
# Changes to be committed:
#
# modified: file1
# modified: file2
# modified: file3
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: file4
#
कहाँ file1
, file2
और file3
फ़ाइलें हैं git सफलतापूर्वक ऑटो-मर्ज किए गए हैं।
इसका मतलब यह है कि उन सभी फ़ाइलों के लिए master
और branchX
बिना किसी संघर्ष के संयुक्त रूप से बदलाव किए गए हैं ।
आप यह निरीक्षण कर सकते हैं कि मर्ज को कैसे चलाया गया था git diff --cached
;
git diff --cached file1
git diff --cached file2
git diff --cached file3
यदि आपको कुछ मर्ज अवांछनीय लगता है तो आप कर सकते हैं
- फ़ाइल को सीधे संपादित करें
- सहेजें
git commit
यदि आप विलय नहीं करना चाहते हैं file1
और वर्तमान शाखा में संस्करण को बनाए रखना चाहते हैं
Daud
git checkout HEAD file1
यदि आप मर्ज नहीं करना चाहते हैं file2
और केवल संस्करण चाहते हैंbranchX
Daud
git checkout branchX file2
यदि आप file3
स्वचालित रूप से मर्ज होना चाहते हैं , तो कुछ भी न करें।
इस बिंदु पर Git ने पहले ही विलय कर दिया है।
file4
ऊपर Git द्वारा एक विफल मर्ज है। इसका मतलब है कि दोनों शाखाओं में एक ही लाइन पर होने वाले बदलाव हैं। यह वह जगह है जहां आपको मैन्युअल रूप से संघर्षों को हल करने की आवश्यकता होगी। आप फ़ाइल को सीधे संपादित करके या आप जिस शाखा में file4
बनना चाहते हैं, उसके संस्करण के लिए चेकआउट कमांड चलाकर मर्ज कर सकते हैं ।
अंत में, के लिए मत भूलना git commit
।