से https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging
यह मूल रूप से एक नकली मर्ज करेगा। यह माता-पिता के रूप में दोनों शाखाओं के साथ एक नया मर्ज कमिटमेंट दर्ज करेगा, लेकिन यह उस शाखा को भी नहीं देखेगा जिसमें आप विलय कर रहे हैं। यह केवल आपकी वर्तमान शाखा में सटीक कोड को मर्ज करने के परिणामस्वरूप रिकॉर्ड करेगा।
$ git merge -s ours mundo
S हमारी ’रणनीति से बने।
$ git diff HEAD HEAD~
आप देख सकते हैं कि जिस शाखा पर हम थे और मर्ज के परिणाम में कोई अंतर नहीं है।
यह अक्सर मूल रूप से यह सोचने में मुश्किल कर सकता है कि बाद में मर्ज करते समय एक शाखा का विलय हो जाता है। उदाहरण के लिए, मान लें कि आपने एक रिलीज़ ब्रांच को बंद कर दिया है और इस पर कुछ काम किया है कि आप किसी बिंदु पर अपनी मास्टर शाखा में वापस विलय करना चाहेंगे। इस बीच, मास्टर पर कुछ बगफिक्स को आपकी रिलीज़ शाखा में वापस लाने की आवश्यकता है। आप बगफिक्स ब्रांच को रिलीज़ ब्रांच में मर्ज कर सकते हैं और हमारी ब्रांच में भी वही ब्रांच मर्ज कर सकते हैं (भले ही फिक्स पहले से है) इसलिए जब आप बाद में रीलीज ब्रांच को मर्ज करते हैं, तो बगफिक्स से कोई टकराव नहीं होता है।
यदि मैं एक नई विषय शाखा के परिवर्तनों को प्रतिबिंबित करने के लिए मास्टर चाहता हूं तो ऐसी स्थिति उपयोगी होगी। मैंने देखा है कि -Xtheirs कुछ परिस्थितियों में संघर्ष के बिना विलय नहीं करता है ... उदा
$ git merge -Xtheirs topicFoo
CONFLICT (modify/delete): js/search.js deleted in HEAD and modified in topicFoo. Version topicFoo of js/search.js left in tree.
इस मामले में मुझे जो समाधान मिला वह था
$ git checkout topicFoo
topicFoo से, पहले -ss हमारी रणनीति का उपयोग करते हुए मास्टर में विलय करें, यह नकली कमिट बनाएगा जो कि विषयवस्तु की स्थिति है। $ git मर्ज -s हमारा गुरु
निर्मित मर्ज कमेटी की जाँच करें
$ git log
अब मास्टर शाखा की जाँच करें
$ git checkout master
विषय शाखा को वापस मर्ज करें लेकिन इस बार -Xtheirs पुनरावर्ती रणनीति का उपयोग करें, यह अब आपको विषय की स्थिति के साथ एक मास्टर शाखा के साथ प्रस्तुत करेगा।
$ git merge -X theirs topicFoo