2011-07-15 14 views
8

मेरे पास कहने के विलय करने के लिए अद्वितीय,Git diff प्रतिबद्ध

 A topic 
    /\ 
D---E---F master 

मैं आसानी से

git diff D..E --name-status 

और ई एफ के लिए एक ही है, और ई-ए करके D-E की diff मिल सकती है।

कमिट एफ एक विलय प्रतिबद्ध है, और कहता है कि इसका संघर्ष था। इसे foo.bar संशोधित करके हल किया गया था। foo.bar गिट जोड़ा गया था, तो विलय प्रतिबद्ध किया गया था। विलय संघर्ष का समाधान किया गया था।

अब foo.bar के लिए परिवर्तन केवल प्रतिबद्ध एफ में मौजूद है। मैं यह अंतर कैसे प्राप्त करूं?

क्या विलय प्रतिबद्धता में विशिष्ट रूप से पेश की गई फ़ाइलों का अंतर प्राप्त करने का कोई तरीका है?

उत्तर

7

git show विलय प्रतिबद्धता पर इसके किसी भी माता-पिता में परिवर्तन नहीं दिखाए जाएंगे। उदाहरण के लिए:

$ echo 123 > file1.txt 
$ git add file1.txt 
$ git commit -am '123' 

$ git checkout -b test 
$ echo 1234 > file1.txt 
$ git commit -am '1234' 

$ git checkout HEAD~ -b test2 
$ echo> file1.txt 
$ git commit -am '0123' 

$ git merge test 
$ echo> file1.txt 
$ git add file1.txt 
$ git commit -am 'Merge test' 

$ git show 
commit f056a1c91d76c8dfce60a03122494dce92c1e161 
Merge: 489f1d3 fcfd2bc 
Date: Fri Jul 15 20:30:17 2011 -0500 

    Merge test 

diff --cc file1.txt 
index 40381e2,81c545e..3521a84 
--- a/file1.txt 
+++ b/file1.txt 
@@@ -1,1 -1,1 +1,1 @@@ 
-
-1234 
+
0

यह सुनिश्चित नहीं है कि "फाइलें जिन्हें मर्ज प्रतिबद्धता में विशिष्ट रूप से पेश किया गया था" का अर्थ है। फ़ाइल पहले मौजूद थी, या कोई संघर्ष नहीं होता। और "foo.bar के लिए परिवर्तन केवल प्रतिबद्ध एफ में मौजूद है" या तो बिल्कुल सही नहीं है। Commits में परिवर्तन नहीं होते हैं। आप foo.bar diff को किसी अन्य के समान सटीक रूप से देख सकते हैं: git diff E F या git diff A F, आप जिस शाखा का अनुसरण करना चाहते हैं उसके आधार पर।

संबंधित मुद्दे