
Tilmann Vogel
Nachdem Sie eine “einfache” Zusammenführung (eine ohne Konflikte) durchgeführt haben, git show
normalerweise zeigt nur so etwas wie
commit 0e1329e551a5700614a2a34d8101e92fd9f2cad6 (HEAD, master)
Merge: fc17405 ee2de56
Author: Tilman Vogel <email@email>
Date: Tue Feb 22 00:27:17 2011 +0100
Merge branch 'testing' into master
Dies liegt daran, dass bei Zusammenführungen git show
verwendet das kombinierte Diff-Format, das Dateien auslässt, die mit einer der Elternversionen übereinstimmen.
Gibt es eine Möglichkeit, Git zu zwingen, weiterhin alle Unterschiede im kombinierten Diff-Modus anzuzeigen?
Tun git show -m
zeigt die Unterschiede (unter Verwendung paarweiser Unterschiede zwischen der neuen und allen Elternversionen), aber ich würde es vorziehen, wenn die Unterschiede in den jeweiligen Spalten mit +/- markiert sind, wie im kombinierten Modus.

rip747
Sehen Sie sich die Commit-Nachricht an:
commit 0e1329e551a5700614a2a34d8101e92fd9f2cad6 (HEAD, master)
Merge: fc17405 ee2de56
Author: Tilman Vogel <email@email>
Date: Tue Feb 22 00:27:17 2011 +0100
Merge branch 'testing' into master
beachten Sie die Zeile:
Merge: fc17405 ee2de56
Nehmen Sie diese beiden Commit-IDs und kehren Sie sie um. Um also den gewünschten Unterschied zu erhalten, würden Sie Folgendes tun:
git diff ee2de56...fc17405
um nur die Namen der geänderten Dateien anzuzeigen:
git diff --name-only ee2de56..fc17405
und um sie zu extrahieren, können Sie dies zu Ihrer gitconfig hinzufügen:
exportfiles = !sh -c 'git diff $0 --name-only | "while read files; do mkdir -p \"$1/$(dirname $files)\"; cp -vf $files $1/$(dirname $files); done"'
dann verwenden Sie es, indem Sie Folgendes tun:
git exportfiles ee2de56..fc17405 /c/temp/myproject

CodeManX
Eine bessere Lösung (erwähnt von @KrisNuttycombe):
git diff fc17405...ee2de56
für den Merge-Commit:
commit 0e1329e551a5700614a2a34d8101e92fd9f2cad6 (HEAD, master)
Merge: fc17405 ee2de56
Author: Tilman Vogel <email@email>
Date: Tue Feb 22 00:27:17 2011 +0100
um alle Änderungen anzuzeigen ee2de56
die ab Commits erreichbar sind fc17405
. Beachten Sie die Reihenfolge der Commit-Hashes – sie ist dieselbe wie in den Zusammenführungsinformationen: Merge: fc17405 ee2de56
Beachten Sie auch die 3 Punkte ...
statt zwei!
Für eine Liste der geänderten Dateien können Sie Folgendes verwenden:
git diff fc17405...ee2de56 --name-only

Seite2k
Sie können vor dem Zusammenführen einen Zweig erstellen, bei dem HEAD auf einen Commit festgelegt ist. Dann können Sie Folgendes tun:
git merge --squash testing
Dies wird zusammengeführt, aber nicht festgeschrieben. Dann:
git diff
Wenn Sie beim Merge-Commit sitzen, zeigt dies die Unterschiede:
git diff HEAD~1..HEAD
Wenn Sie nicht beim Merge-Commit sind, ersetzen Sie einfach HEAD durch den Merge-Commit. Diese Methode scheint die einfachste und intuitivste zu sein.

max630
Scheint hier beantwortet zu sein:
https://public-inbox.org/git/7vd392ezhx.fsf@alter.siamese.dyndns.org/
Also in ähnlicher Weise Laufen
$ git diff –cc $M $M^1 $M^2 $(git merge-base $M^1 $M^2)
sollte einen kombinierten Patch zeigen, der den Zustand bei $M relativ zu den Zuständen erklärt, die in seinen Eltern und der Merge-Basis aufgezeichnet sind.

Patthoyts
Ich denke, Sie brauchen nur ‘git show -c $ref’. Wenn Sie dies im Git-Repository auf a8e4a59 versuchen, wird ein kombiniertes Diff angezeigt (Plus-/Minuszeichen in einer von 2 Spalten). Wie das git-show-Handbuch erwähnt, delegiert es ziemlich genau an ‘git diff-tree’, sodass diese Optionen nützlich aussehen.

hesham_EE
Wenn Ihr Merge-Commit wie oben beschrieben Commit 0e1329e5 ist, können Sie das Diff, das in diesem Merge enthalten war, folgendermaßen abrufen:
git diff 0e1329e5^..0e1329e5
Ich hoffe das hilft!
9147400cookie-checkWie kann man einen Merge-Commit mit kombinierter Diff-Ausgabe “git zeigen”, selbst wenn jede geänderte Datei mit einem der Eltern übereinstimmt?yes
@ Tilman Vogel: Bitte überprüfen Sie die akzeptierte Antwort – Sieht so aus, als gäbe es bessere Antworten
– Jayan
22. November 2017 um 0:25 Uhr
@Jayan Während die anderen Antworten beliebter sind, weil sie nützliche Hinweise enthalten, kommen sie meinem Problem nicht näher, da sie nur Zwei-Wege-Diffs machen. Ich war auf der Suche nach einem 3-Wege-Diff.
– Tilmann Vogel
23. November 2017 um 1:03 Uhr