57 Stimmen

Unterschied zwischen git HEAD und dem aktuellen Projektstatus?

Ich zitiere ein Git-Tutorial:

git diff shows the diff between HEAD and the current project state

Ich frage mich, was das bedeutet. Ist der HEAD nicht das derzeit aktive Projekt?

Danke

133voto

VonC Punkte 1117238

Von " Angeben von Revisionen "

HEAD nennt den Commit, auf dem die Änderungen im Arbeitsbaum basieren.

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

Die Sache ist die, dass standardmäßig git diff zeigt die Unterschiede zwischen dem "aktuellen Zustand Ihres Projekts" (d. h. den Dateien in Ihrem Arbeitsbaum) und der Index (nicht HEAD).
Mit anderen Worten: Die Unterschiede sind das, was Sie podría git anweisen, den Index weiter zu ergänzen, aber Sie haben es noch nicht getan.

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

Siehe git book für mehr (Archiv-Link) :

Eine übliche Anwendung ist die einfache Ausführung von

$ git diff

die Ihnen die Änderungen im Arbeitsverzeichnis anzeigt, die noch nicht für die nächste Übertragung bereitgestellt wurden. Wenn Sie sehen wollen, was für die nächste Übertragung bereitgestellt wird, können Sie Folgendes ausführen

$ git diff --cached

die Ihnen die Differenz zwischen dem Index und Ihrer letzten Übergabe anzeigt; das, was Sie übergeben würden, wenn Sie "git commit" ohne die Option "-a" ausführen. (In Git-Versionen 1.6.1 und später können Sie auch die Option git diff --staged was vielleicht leichter zu merken ist). Schließlich können Sie auch

$ git diff HEAD

die die Änderungen im Arbeitsverzeichnis seit der letzten Übergabe anzeigt; das, was Sie übergeben würden, wenn Sie "git commit -a" ausführen.

Siehe auch 365git: Einen Unterschied zwischen dem Arbeitsbaum und anderen Übertragungen erhalten :

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

0voto

chimeracoder Punkte 19118

git diff dient dazu, die nicht übertragenen Änderungen anzuzeigen (d. h. die Arbeit, die Sie geleistet haben, aber noch nicht in das aktuelle Projekt übertragen haben).

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X