3448 votes

Différence entre "git add" et "git add ."

La commande git add [--all|-A] semble être identique à git add .. Est-ce correct? Si non, en quoi diffèrent-elles?

4861voto

Charles Bailey Points 244082

"git add -A" est équivalent à "git add .; git add -u".

Le point important à propos de "git add .", c'est qu'il ressemble à l'arbre de travail et ajoute tous les chemins de la mise en scène des changements s'ils sont modifiés ou nouveaux et pas ignoré, il n'a pas les 'rm' actions.

"git add -u" regarde tous les dossiers et stades les modifications apportées à ces fichiers si ils sont différents ou si elles ont été supprimées. Il ne pas ajouter de nouveaux fichiers, il ne les étapes des changements de suivi des dossiers.

"git add -A" est un raccourci pratique pour faire les deux.

Vous pouvez tester les différences avec quelque chose comme ceci:

git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial

echo OK >> change-me
rm delete-me
echo Add me > add-me

git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git add .
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me

git reset

git add -u
git status

# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git reset

git add -A
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me

Résumé:

  • git add -A étapes Toutes
  • git add . stades nouveaux ou modifiés, sans supprimés
  • git add -u étapes, modifié et supprimé, sans nouvelle

211voto

VonC Points 414372

Notez que commencer git 2.0 (T1 ou T2 2014), lorsque l'on parle de git add . (chemin d'accès actuel à l'intérieur de l'arbre de travail), vous devez utiliser '.' dans les autres git add commandes.

Cela signifie que:

"git add -A ." est équivalent à "git add .; git add -u ."

(Note du supplément '."pour git add -A et git add -u)

Parce qu' git add -A ou git add -u serait exploitée (à partir de git 2.0 uniquement) sur l' ensemble de l'arbre de travail, et pas seulement sur le chemin d'accès actuel.

Ces commandes fonctionnent sur l'ensemble de l'arborescence du dépôt Git 2.0 pour des raisons 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" de se comporter comme si "git add -u .", il est important pour ceux qui sont habitués à "git add -u" (sans pathspec) mise à jour de l'index uniquement pour les chemins dans l'actuelle sous-répertoire pour commencer la formation de leurs doigts explicitement dire "git add -u ." quand ils veulent dire avant Git 2.0 vient.

Un avertissement est émis lorsque ces commandes sont exécutées sans pathspec et quand vous avez des modifications locales à l'extérieur du répertoire courant, parce que le comportement de Git 2.0 sera différent à partir de la version d'aujourd'hui dans une telle situation.

154voto

Richard Points 771

Donc, à partir de Charles instructions ci-dessus, après avoir tester mon projet de compréhension serait comme suit:

# For the next commit
$ git add .   # add to index only files created/modified and not those deleted
$ git add -u  # add to index only files deleted/modified and not those created
$ git add -A  # do both operation at once, add to index all files

Ce lien peut aussi être utile de comprendre dans quelle situation ces commandes peuvent être appliquées: la Suppression des Fichiers Supprimés à partir de votre Git Répertoire de Travail.

40voto

Kilian Lindberg Points 489

La fin de la partie, mais cette question mérite également un distillée plus rapide réponse.

git add -A 

Les deux ci-dessous (le même que git add --tous)

git add . 

Étapes nouvelles + fichiers modifiés

git add -u 

Les étapes modifié + fichiers supprimés

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X