Wenn ich git diff COMMIT
mache, sehe ich die Änderungen zwischen diesem Commit und HEAD (soweit ich weiß), aber ich würde gerne die Änderungen sehen, die durch dieses einzelne Commit vorgenommen wurden.
Ich habe bei diff
/log
keine offensichtlichen Optionen gefunden, die mir diese Ausgabe ermöglichen.
So zeigen Sie den Unterschied für einen bestimmten COMMIT
-Hash an:
git diff COMMIT~ COMMIT
zeigt Ihnen den Unterschied zwischen dem Vorfahren dieses COMMIT
und dem COMMIT
. In den Manpages für git diff finden Sie Details zum Befehl und gitrevisions zur ~
-Notation und ihren Freunden.
Alternativ wird git show COMMIT
etwas sehr Ähnliches tun. (Die Daten des Commits, einschließlich der Diff - aber nicht für Merge-Commits.) Siehe git show manpage .
Wie in " Abkürzung für diff of git commit with its parent? " erwähnt, können Sie git diff
auch verwenden mit:
_git diff COMMIT^!
_
oder
_git diff-tree -p COMMIT
_
Mit git show müssten Sie (um sich nur auf diff zu konzentrieren) Folgendes tun:
_git show --color --pretty=format:%b $COMMIT
_
Der Parameter COMMIT
ist ein commit-ish:
Ein Festschreibungsobjekt oder ein Objekt , das rekursiv auf ein Festschreibungsobjekt dereferenziert werden kann. Die folgenden sind allesamt Festschreibungszeichen: ein Festschreibungsobjekt, ein Tag-Objekt , das auf ein Festschreibungsobjekt verweist, ein Tag-Objekt, das auf ein Tag-Objekt verweist, das auf ein Festschreibungsobjekt verweist, usw.
Siehe gitrevision "SPECIFYING REVISIONS" , um auf ein Commit zu verweisen.
Siehe auch " Was bedeutet baumartig in Git? ".
Sie können auch auf diese einfache Weise versuchen:
git show <COMMIT>
git show
zeigt die Änderungen an, die beim letzten Festschreiben vorgenommen wurden.
Entspricht git show HEAD
.
git show HEAD~1
bringt Sie 1 Commit zurück.
Holen Sie sich zuerst die Festschreibungs-ID mit,
git log #to list all
Oder
git log -p -1 #last one commit id
Festschreibungs-ID kopieren.
Jetzt verwenden wir zwei Methoden, um Änderungen von einem bestimmten Commit aufzulisten:
Methode 1:
git diff commit_id^! #commit id something like this 1c6a6000asad012
Methode 2:
git show commit_id
For example: git show 1c6a600a
git show <commit_sha>
Dies zeigt Ihnen genau, was in diesem Commit enthalten ist. Ich denke, Sie können einen Bereich erstellen, indem Sie einfach ein Leerzeichen zwischen zwei Commit-Shas einfügen.
git show <beginning_sha> <ending_sha>
dies ist sehr hilfreich, wenn Sie häufig einen Rebasing durchführen, da alle Feature-Protokolle hintereinander abgelegt werden.
Von der Manpage für git-diff (1) :
git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>
Verwenden Sie die dritte in der Mitte:
git diff [options] <parent-commit> <commit>
Ebenfalls von derselben Manpage unten im Abschnitt Beispiele :
$ git diff HEAD^ HEAD <3>
Vergleichen Sie die Version vor dem letzten Commit und dem letzten Commit.
Zugegeben, es ist etwas verwirrend formuliert, es wäre weniger verwirrend als
Vergleichen Sie das letzte Commit mit dem Commit davor.
Das Folgende scheint den Job zu machen; Ich benutze es, um zu zeigen, was durch eine Fusion eingebracht wurde.
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
Normalerweise mache ich:
git diff HEAD~1
Anzeige der Änderungen bezüglich des letzten Commits. Wenn Sie mehr Commits haben, erhöhen Sie einfach die Zahl 1 auf die Anzahl der Commits, die Sie sehen möchten.
Andere Möglichkeit:
git log -p COMMIT -1
git difftool COMMIT^ <commit hash>
ist auch möglich, wenn Sie Ihr difftool konfiguriert haben.
Sehen Sie hier, wie difftool konfigurieren oder die Manpage hier
Zusätzlich können Sie git diff-tree --no-commit-id --name-only -r <commit hash>
verwenden, um zu sehen, welche Dateien in einem Give-Commit-Hash geändert/festgeschrieben wurden
Sie können git diff HEAD HEAD^1
verwenden, um den Unterschied mit dem übergeordneten Commit anzuzeigen.
Wenn Sie nur die Liste der Dateien anzeigen möchten, fügen Sie die Option --stat
hinzu.
Verwenden Sie git show COMMIT
, um Autor und Uhrzeit durch Festschreiben anzuzeigen. Was zu so etwas führen wird:
commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <[email protected]>
Date: Fri Jul 24 17:46:42 2015 -0700
Merge remote-tracking branch 'Origin/your-feature'
Wenn Sie sehen möchten, welche Dateien geändert wurden, führen Sie Folgendes mit den Werten aus der Merge-Zeile über git diff --stat a2a2894 3a1ba8f
aus.
Wenn Sie den aktuellen Unterschied sehen möchten, führen Sie git --stat a2a2894 3a1ba8f
aus.
Ich mag den folgenden Befehl, um ein bestimmtes Commit und sein letztes Commit zu vergleichen:
git diff <commit-hash>^-
Beispiel:
git diff cd1b3f485^-
Ich arbeite mit Git Version 2.6.1.windows.1 unter Windows 10, daher musste Neviks Antwort leicht geändert werden (Tilde anstelle von Caret):
git diff COMMIT~ COMMIT
Eine andere Möglichkeit ist, das Caret zu zitieren:
git diff "COMMIT^" COMMIT
Zur Überprüfung der vollständigen Änderungen:
git diff <commit_Id_1> <commit_Id_2>
Zum Prüfen nur der geänderten/hinzugefügten/gelöschten Dateien:
git diff <commit_Id_1> <commit_Id_2> --name-only
NOTE: Zum Prüfen von Diff ohne Commit dazwischen müssen Sie die Commit-IDs nicht eingeben.
Mit diesem Befehl erhalten Sie den übergeordneten Git-Commit-Hash:
git log -n 2 <commit-hash>
Danach git diff-tool <commit-hash> <parent-commit-hash>
Beispiel:
[email protected] ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3
commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <[email protected]>
Date: Mon Jul 25 13:17:07 2016 +0530
CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.
commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <[email protected]>
Date: Mon Jul 25 11:28:09 2016 +0530
The ratio of the height to width of the channel images are maintained.
Danach
git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f