it-swarm.com.de

Wie werden die Änderungen in einem Git-Commit angezeigt?

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.

1290
laktak

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 .

1667
Nevik Rehnel

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? ".

448
VonC

Sie können auch auf diese einfache Weise versuchen:

git show <COMMIT>
291
Lakhan

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.

63
Adam Salma

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
29
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.

25
Iwnnay

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.

25
user456814

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>
21
MichaelMoser

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.

13
Alex

Andere Möglichkeit:

git log -p COMMIT -1

11
John_West
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

9

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.

8
Irshu

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.

6
Nikita G.

Ich mag den folgenden Befehl, um ein bestimmtes Commit und sein letztes Commit zu vergleichen:

git diff <commit-hash>^-

Beispiel:

git diff cd1b3f485^-
5
starcwl

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
4
Juuso Ohtonen

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.

3
bit_cracker007

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
2