git add. vs git commit -a

Réponses:

139

git commit -asignifie presque [*] la même chose que git add -u && git commit.

Ce n'est pas la même chose car git add .cela ajouterait des fichiers non suivis qui ne sont pas ignorés, mais git add -uuniquement les modifications (y compris les suppressions) des fichiers déjà suivis.

[*] Il y a une différence subtile si vous n'êtes pas dans le répertoire racine de votre référentiel. git add -umet à jour les fichiers dans le répertoire actuel et ci-dessous, cela équivaut à git add -u .alors que les git commit -aétapes et les modifications apportées à tous les fichiers suivis.

CB Bailey
la source
3
Le comportement dans [*] changera dans git 2.0, par souci de cohérence.
user1284631
2
Dans quelle direction? c'est-à-dire que commit -a deviendra comme add -u, ou est-ce que add -u deviendra comme commit -a?
Miles Rout
5
@MilesRout: git add -udeviendra comme git commit -a; vous devrez dire explicitement git add -u .si c'est ce que vous voulez dire.
CB Bailey
C'est absolument la même chose depuis Git v 2.0 où git add .se comporte d'une manière différente.
Nick Volynkin
13

git commit -ainvoque automatiquement git addsur tous les fichiers dont il a connaissance. Vous pouvez utiliser git addpour sélectionner les fichiers à valider. Consultez la documentation pour plus d'informations: ici

alternative
la source
11
tous les fichiers dont il a connaissance me sont très peu clairs, d'autant plus que ceux
ci n'auraient
1
@alternative, Pourtant cette réponse peut faire mieux si vous ajoutez une clarification pour "tous les fichiers qu'elle connaît" .....
Pacerier
2
@Pacerier équivalent àgit add -u
alternative
2
@ Z.Khullah, donc "tous (...)" signifie "fichiers suivis"?
TheFrost
1
@TheFrost précisément!
Z. Khullah
1

En utilisant le commutateur git commit -a avec la commande commit pour "ajouter" automatiquement les modifications de tous les fichiers connus (c'est-à-dire tous les fichiers qui sont déjà répertoriés dans l'index)

Dilip
la source