Manchmal, wenn ich kurz vor einem Commit stehe, kann ich mich nicht genau erinnern, was sich seit dem letzten Commit geändert hat. Wie kann ich einen Unterschied zwischen dem aktuellen Status des Codes und dem letzten Commit sehen?
Manchmal, wenn ich kurz vor einem Commit stehe, kann ich mich nicht genau erinnern, was sich seit dem letzten Commit geändert hat. Wie kann ich einen Unterschied zwischen dem aktuellen Status des Codes und dem letzten Commit sehen?
Antworten:
Wenn Sie dem Index noch keine Dateien hinzugefügt haben (mit git add), tun Sie dies einfach
git diff
Dies zeigt den Unterschied zwischen Ihrem Arbeitsbaum und dem Index.
Wenn Sie dem Index Dateien hinzugefügt haben, müssen Sie dies tun, um die Unterschiede zwischen dem Index und dem letzten Commit (HEAD) anzuzeigen.
git diff --cached
Wenn Sie die Änderungen sehen möchten, die im Arbeitsbaum im Vergleich zum letzten Commit ( HEAD) vorgenommen wurden, können Sie dies (wie Carlos betont) tun
git diff HEAD
Diese Änderungen sind die Kombination von git diffund git diff --cached.
git diffden Status des Index und das vorherige Commit in einer Diff-Nachricht anzuzeigen?
git diff --cached HEAD^:)
Wenn Sie gerade ein Commit durchgeführt haben oder sehen möchten, was sich im letzten Commit im Vergleich zum aktuellen Status geändert hat (vorausgesetzt, Sie haben einen sauberen Arbeitsbaum), können Sie Folgendes verwenden:
git diff HEAD^
Dadurch wird der HEAD mit dem Commit unmittelbar zuvor verglichen. Man könnte es auch tun
git diff HEAD^^
zum Vergleich mit dem Stand der Dinge vor 2 Commits. Um den Unterschied zwischen dem aktuellen Status und einem bestimmten Commit zu erkennen, gehen Sie einfach wie folgt vor:
git diff b6af6qc
Wo b6af6qcist ein Beispiel für einen Commit-Hash?
HEAD^ist das Commit vor dem letzten Commit.
Sie bitten git, das aktuelle / letzte Commit zu unterscheiden, das eine Abkürzung von hat HEAD.
So git diff HEADwird den aktuellen Zustand des worktree mit dem aktuellen begehen vergleichen.
Dies zeigt auch den Unterschied und welche Dateien geändert / modifiziert wurden.
$ git status
Zeigt Pfade mit Unterschieden zwischen der Indexdatei und dem aktuellen HEAD-Commit, Pfade mit Unterschieden zwischen dem Arbeitsbaum und der Indexdatei sowie Pfade im Arbeitsbaum an, die nicht von git verfolgt werden (und von gitignore nicht ignoriert werden (5). ). Die ersten sind das, was Sie durch Ausführen von git commit festschreiben würden. Das zweite und dritte können Sie festschreiben, indem Sie git add ausführen, bevor Sie git commit ausführen.
https://www.kernel.org/pub/software/scm/git/docs/git-status.html
Das funktioniert auch bei mir:
# The last one
git diff HEAD~1 HEAD
# The last but one, etc...
git diff HEAD~2 HEAD~1
Dies funktioniert normalerweise für eine lineare Historie. Dies könnte schwieriger werden, wenn es auch Zusammenführungs-Commits gibt. Ich empfehle Ihnen, in diesem Dokument eine schöne und vollständige Erklärung zu finden, insbesondere das Beispiel für die Abbildung eines Commit-Baums:
git diffvergleicht den Arbeitsbaum mit dem Index, nicht mit HEAD.