web-dev-qa-db-fra.com

Quelle est la différence entre `git add .` et` git add -u`?

Je supposais que les deux fonctionnent de la même manière. Les deux ajoutent chaque fichier à l'index. Mais je me trompe.

  • Quelle est la différence entre git add . et git add -u?
68
TK.

C'est l'un des git gotchas mentionné ici (pré Git 2.0).

git add . ajoute uniquement ce qui est là, pas ce qui a été supprimé (s'il est suivi).

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 se chargerait des deux étapes ...


Avec Git 2.0, git add -A est la valeur par défaut .

git add <path> est le même que "git add -A <path> "maintenant, pour que" git add dir/ "remarquera les chemins que vous avez supprimés du répertoire et enregistrera la suppression.
Dans les anciennes versions de Git, "git add <path> "utilisé pour ignorer les suppressions.

Tu peux dire "git add --ignore-removal <path> "pour ajouter uniquement les chemins ajoutés ou modifiés dans <path>, si tu veux vraiment.


Avertissement ( git1.8.3 avril 2013, pour le prochain git2. ).
J'ai modifié ma réponse pour dire git add -u ., au lieu de git add -u .:

git add -u fonctionnera sur la totalité de l'arborescence dans Git 2.0 par souci de cohérence avec "git commit -a "et d'autres commandes.
Parce qu'il n'y aura pas de mécanisme pour faire "git add -u "se comporte comme" git add -u . ", il est important pour ceux qui ont l'habitude de" git add -u "(sans pathspec) mettant à jour l'index uniquement pour les chemins du sous-répertoire courant afin de commencer à entraîner leurs doigts à dire explicitement" git add -u . "quand ils le pensent avant l'arrivée de Git 2.0.

Comme je l'ai mentionné dans " e "

70
VonC

Comme le dit le manuel: git add . ajoutera tous les fichiers dans votre répertoire actuel, tandis que git add -u . n'ajoutera que ceux déjà suivis.

21
Benjamin Bannier

git add documentaiton

git add . 

ajouter tous les fichiers du répertoire courant

git add -u 

ne met à jour que les fichiers en cours de suivi.

12
Derek Swingley