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.