Was ist der Unterschied zwischen "git add." Und "git add -u"?


75

Ich ging davon aus, dass beide gleich funktionieren. Beide fügen jede Datei zum Index hinzu. Aber ich scheine falsch zu sein.

  • Was ist der Unterschied zwischen git add .und git add -u?

Antworten:


77

Es ist eines der hier erwähnten Git-Fallstricke (vor Git 2.0).

git add . fügt nur hinzu, was vorhanden ist, nicht, was gelöscht wurde (falls verfolgt).

git add .
git commit
git status
//hey! why didn't it commit my deletes?, Oh yeah, silly me
git add -u .
git commit --amend

git add -A würde sich um beide Schritte kümmern ...


Mit Git 2.0 git add -Aist Standard .

git add <path>ist dasselbe wie " git add -A <path>" jetzt, so dass " git add dir/" Pfade bemerkt, die Sie aus dem Verzeichnis entfernt haben, und das Entfernen aufzeichnet.
In älteren Git-Versionen wurde " git add <path>" zum Ignorieren von Entfernungen verwendet.

Sie können " git add --ignore-removal <path>" sagen , um nur hinzugefügte oder geänderte Pfade hinzuzufügen <path>, wenn Sie dies wirklich möchten.


Warnung ( git1.8.3 April 2013, für das kommende git2.0 ).
Ich habe meine Antwort geändert, um zu sagen git add -u ., anstatt git add -u.:

git add -uwird den gesamten Baum in Git 2.0 bearbeiten, um die Konsistenz mit " git commit -a" und anderen Befehlen zu gewährleisten.
Da es keinen Mechanismus gibt, mit dem sich " git add -u" als " " verhält git add -u ., ist es wichtig, dass diejenigen, die es gewohnt sind, git add -uden Index "(ohne Pfadangabe)" nur für Pfade im aktuellen Unterverzeichnis zu aktualisieren, ihre Finger trainieren, um explizit " git add -u ." zu sagen. wenn sie es ernst meinen, bevor Git 2.0 kommt.

Wie ich in " e " erwähnt habe


5
Vielen Dank für Ihre Antwort und ein Beispiel. Das "hey!" Linie hilft mir wirklich.
— TK.

@TK: Ja, das Beispiel von Benjol ( stackoverflow.com/users/11410/benjol) ist gut.
— VonC

Es scheint, dass wir die .(Pfadspezifikation) nicht mit Git 2.x setzen müssen. Es funktioniert zu finden, wenn ich getestet habe.
— Sanghyun Lee

Ab Git 2.0 werden außerdem git add .alle Änderungen am Index hinzugefügt, da die -AOption standardmäßig aktiviert ist. Überprüfen Sie diese Antwort stackoverflow.com/a/26343584/524588
— Sanghyun Lee

@ Sangdol Danke für diese Erinnerung. Ich habe die Antwort entsprechend aktualisiert.
— VonC

23

Wie im Handbuch angegeben: git add .Fügt alle Dateien im aktuellen Verzeichnis hinzu, während git add -u .nur die bereits verfolgten Dateien hinzugefügt werden.


10
add -uwird auch Löschungen inszenieren.
— CB Bailey

nur wenn die gelöschte Datei verfolgt wurde;)
— Benjamin Bannier

add -u ist das Commit -a-Äquivalent (in Dateien, mit denen es arbeitet).
— Lakshman Prasad

Bannier: Wenn die gelöschte Datei nicht verfolgt wurde, kann trotzdem nichts aus dem Staging-Bereich gelöscht werden?
— CB Bailey

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.