web-dev-qa-db-ger.com

Datei wird nicht in git diff nach einem git add angezeigt. Woher weiß ich, dass es begangen wird?

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?

31
Kitty1911

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.

41
David Cain

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

22
milkovsky

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.

enter image description here

Mein Screenshot erscheint erspart, da sich an diesem Status derzeit keine Änderungen ergeben haben.

5
Michael Durrant

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.

1
tom

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.

0
Xavi