Ich hatte eine nicht gespeicherte Datei, die nicht in einem Git-Diff angezeigt wurde. Wenn ich sie dem Bereich "Änderungen, für die ein Commit ausgeführt werden soll" hinzugefügt hat, wird sie immer noch nicht im Git-Diff angezeigt. Ich zeige mich mit einem git status -v
, wenn ich einen Vergleich gegen HEAD mache.
Ich bin immer noch sehr neu bei git. Kann mir bitte jemand sagen, ob die Datei festgeschrieben wird, auch wenn sie nicht in einem regulären Vergleich angezeigt wird, da sie zum Staging-Bereich hinzugefügt wurde?
Wenn Sie die Änderungen in staged in einem Vergleich sehen möchten, können Sie weiterhin git diff
verwenden. Sie müssen lediglich das Flag --staged
übergeben:
[email protected]:~/dummy_repo$ echo "Hello, world" > hello.txt
[email protected]:~/dummy_repo$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# hello.txt
nothing added to commit but untracked files present
[email protected]:~/dummy_repo$ git add hello.txt
[email protected]:~/dummy_repo$ git diff
[email protected]:~/dummy_repo$ git diff --staged
diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..76d5293
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+Hello, world
Wenn Sie nur darauf achten, welche Dateien bereitgestellt werden, können Sie natürlich einen git status
ausführen, aber git diff --staged --name-only
gibt jedem bereitgestellten Dateinamen eine eigene Zeile.
Um alle Änderungen in der Arbeitsstruktur seit dem letzten Commit einschließlich neuer Dateien anzuzeigen, verwenden Sie
git diff HEAD
Weitere Beispiele finden Sie hier: git-diff
Wie du gesehen hast. Es wird in git status
angezeigt, also wird es festgeschrieben, wenn Sie es git commit
eingeben.
Es kann hilfreich sein, ein visuelles Git-Tool wie gitx (Mac) oder gitg (Linux) zu verwenden.
Es hat schöne Tafeln, um Sie in Szene zu setzen, nicht in Szene gesetzt usw.
Mein Screenshot erscheint erspart, da sich an diesem Status derzeit keine Änderungen ergeben haben.
Wenn Sie "git add __" eingegeben haben, wird die Datei in Ihr nächstes Commit aufgenommen. Dieses Commit wird auf den Server übertragen, wenn Sie "git Push" ausführen.
Ich möchte zu David Cains erster Antwort die folgende Nuance hinzufügen: Der Befehl ...
git diff --staged
... zeigt nur die inszenierten Änderungen (wie @rogerdpack darauf hinweist).
Wenn Sie erst nach dem Generieren des Diff einer einzelnen Datei sind, muss ich nichts hinzufügen. Wenn Sie jedoch eine diff-Datei mit "alle Änderungen seit dem letzten HEAD" generieren möchten, sollten Sie (1.) wahrscheinlich alle Dateien mit den Änderungen in Szene setzen (2. ) Führen Sie das diff aus, (3.) entpacken Sie alle Dateien wie folgt:
git add -A
git diff --staged HEAD
git reset
Es ist unnötig zu erwähnen, dass diese Befehle mit all Ihrer zuvor bereitgestellten und nicht bereitgestellten Dateien durcheinander geraten. Sie sollten also vorsichtig sein, wenn Sie viele temporäre Dateien herumliegen. Weitere Informationen finden Sie in der git diff's - Handbuchseite.