La commande git add [--all|-A]
semble être identique à git add .
. Est-ce correct? Si non, en quoi diffèrent-elles?
Réponses
Trop de publicités?"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
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.
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.