2010-07-20 21 views

Antwort

81

Von "Specifying revisions"

HEAD Namen der Commit auf dem Sie die Veränderungen in der Arbeitsbaum basiert.

Es gibt noch andere Köpfe (FETCH_HEAD, ORIG_HEAD und MERGE_HEAD). Siehe Jefromi's answer für mehr.

Die Sache ist die, die standardmäßig git diff zeigt eigentlich die Unterschiede zwischen „den aktuellen Stand des Projekts“ (das heißt die Dateien auf dem Arbeitsbaum) und der Index (nicht HEAD).
Mit anderen Worten, die Unterschiede sind, was Sie könnte sagen git weiter zum Index hinzufügen, aber Sie haben immer noch nicht.

wenn Sie das tun git diff --cached, dann es wird der Index mit HEAD vergleichen.

Siehe git book for more (archive link):

Eine häufige Anwendung ist einfach

$ git diff 

laufen, die Sie im Arbeitsverzeichnis verändert werden zeigen, die noch nicht für die nächste begehen in Szene gesetzt. Wenn Sie sehen wollen, was inszeniert für die nächste begehen, können Sie

$ git diff --cached 

laufen, die Ihnen die Differenz zwischen dem Index zeigt und die letzten begehen; Was würden Sie tun, wenn Sie "git commit" ohne die Option "-a" ausführen? (In Git Versionen 1.6.1 und höher können Sie auch git diff --staged verwenden, die möglicherweise leichter zu merken.) Schließlich können Sie

$ git diff HEAD 

laufen, welche Änderungen im Arbeitsverzeichnis zeigt seit dem letzten begehen; was würdest du begehen, wenn du "git commit -a" ausführst.

Siehe auch 365git: Getting a diff between the working tree and other commits:

http://images.abizern.org.s3.amazonaws.com/365git/Feb11/Git%20Diff%202.png

+2

genialer Link, in den 3 Jahren, in denen ich git benutzt habe, habe ich kein einziges Bild gesehen, das so gut erklärt hat. Die offiziellen Git-Bilder sind im Vergleich zu der Einfachheit, die durch das verknüpfte Bild bereitgestellt wird, schrecklich. Alle anderen Bilder auf dem Blog scheinen vergleichbar großartig zu sein. Ich meine, die offiziellen Git-Bilder sind eher Bildserien, die noch Raum für Interpretationen lassen, während das Bild in deinem Beitrag 5 verschiedene Befehle in nur einem Bild erklärt. Dies ist eine Inversion der Effizienz, 5 Bilder pro Befehl verglichen 5 Befehle pro Bild. – HopefullyHelpful

2

git diff ist die unbestätigten Änderungen zu zeigen (dh die Arbeit, die Sie getan haben, aber noch nicht an das aktuelle Projekt).

Hier ist eine vollständige Erklärung: http://git-scm.com/docs/git-diff

+0

Nicht ganz. VonCs Antwort ist genauer; 'git diff' zeigt * nicht * Änderungen, die Sie vorgenommen haben, noch nicht an das Projekt gebunden, aber * haben * mit einem' git add' hinzugefügt. –

Verwandte Themen