यहां ज्यादातर जवाबों के लिए या तो एक साफ-सुथरी वर्किंग डायरेक्टरी और कई इंटरएक्टिव स्टेप्स (स्क्रिप्टिंग के लिए खराब) की आवश्यकता होती है, या सभी मामलों के लिए काम नहीं करते हैं, जैसे पिछले मर्ज जो पहले से ही आपके टारगेट ब्रांच में कुछ उत्कृष्ट बदलाव लाते हैं, या चेरी-पिक्स कर रहे हैं वही।
सही मायने में यह देखने के लिए कि master
यदि आप develop
इसे अभी मिलाते हैं तो शाखा में क्या बदलाव होगा :
git merge-tree $(git merge-base master develop) master develop
जैसा कि यह प्लंबिंग कमांड है, यह अनुमान नहीं लगाता है कि आपका क्या मतलब है, आपको स्पष्ट होना चाहिए। यह आउटपुट को रंगीन नहीं करता है या आपके पेजर का उपयोग नहीं करता है, इसलिए पूरी कमांड होगी:
git merge-tree $(git merge-base master develop) master develop | colordiff | less -R
- https://git.seveas.net/previewing-a-merge-result.html
(लिंक के लिए डेविड नॉर्मिंगटन का धन्यवाद)
पुनश्च:
यदि आप मर्ज संघर्ष प्राप्त करेंगे, तो वे आउटपुट में सामान्य संघर्ष मार्करों के साथ दिखाई देंगे, उदाहरण के लिए:
$ git merge-tree $(git merge-base a b ) a b
added in both
our 100644 78981922613b2afb6025042ff6bd878ac1994e85 a
their 100644 61780798228d17af2d34fce4cfbdf35556832472 a
@@ -1 +1,5 @@
+<<<<<<< .our
a
+=======
+b
+>>>>>>> .their
उपयोगकर्ता @dreftymac एक अच्छा बिंदु बनाता है: यह इसे स्क्रिप्टिंग के लिए अनुपयुक्त बनाता है, क्योंकि आप इसे आसानी से स्टेटस कोड से नहीं पकड़ सकते हैं। संघर्ष मार्कर परिस्थितियों (हटाए गए बनाम संशोधित, आदि) के आधार पर काफी भिन्न हो सकते हैं, जिससे यह कठिन भी हो सकता है। खबरदार।
git merge
औरgit reset --keep HEAD@{1}
अगर मुझे परिणाम पसंद नहीं है।