2011-07-15 7 views
8

Say mam,git diff wyjątkowy scalić popełnić

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

mogę łatwo dostać diff D-E wykonując

git diff D..E --name-status 

i takie same dla E-F i E-A.

Zatwierdzenie F jest zatwierdzeniem scalenia i powiedz, że zawiera konflikt. Zostało to rozwiązane poprzez modyfikację foo.bar. foo.bar został dodany git, a następnie zatwierdzono zatwierdzenie merge. Konflikt scalania został rozwiązany.

Teraz zmiana foo.bar istnieje tylko w commit F. Jak mogę uzyskać różnicę?

Czy istnieje sposób na uzyskanie różnic plików, które zostały jednoznacznie wprowadzone w zatwierdzeniu scalenia?

Odpowiedz

7

git show po zatwierdzeniu scalenia będą wyświetlane zmiany nie należące do żadnego z rodziców. Na przykład:

$ 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

Nie wiem dokładnie, co oznacza "pliki, które zostały jednoznacznie wprowadzone w zatwierdzeniu scalenia". Plik musiał istnieć wcześniej lub nie byłoby konfliktu. A "zmiana dla foo.bar istnieje tylko w zatwierdzeniu F" również nie jest właściwa. Zobowiązania nie zawierają zmian. Możesz zobaczyć foo.bar diff dokładnie taki sam jak każdy inny: git diff E F lub git diff A F, w zależności od gałęzi, którą chcesz śledzić.