git add. vs git commit -a

Respostas:

139

git commit -asignifica quase [*] a mesma coisa que git add -u && git commit.

Não é o mesmo git add .que adicionar arquivos não git add -urastreados que não estão sendo ignorados, apenas altera as etapas (incluindo exclusões) em arquivos já rastreados.

[*] Há uma diferença sutil se você não está no diretório raiz do seu repositório. git add -uorganiza atualizações para arquivos no diretório atual e abaixo, é equivalente a git add -u .enquanto git commit -aprepara e confirma mudanças em todos os arquivos rastreados.

CB Bailey
fonte
3
O comportamento em [*] mudará no git 2.0, para consistência.
user1284631
2
Em que direção? isto é, o commit -a ficará como add -u, ou o add -u ficará como commit -a?
Miles Rout
5
@MilesRout: git add -uficará como git commit -a; você precisará dizer explicitamente git add -u .se é isso que você quer dizer.
CB Bailey,
Isso é absolutamente o mesmo desde Git v 2.0, onde git add .se comporta de uma maneira diferente.
Nick Volynkin
13

git commit -ainvoca automaticamente git addem todos os arquivos que conhece. Você pode usar git addpara selecionar quais arquivos enviar. Consulte a documentação para mais informações: aqui

alternativo
fonte
11
todos os arquivos que ele conhece não são muito claros para mim, especialmente porque eles NÃO foram adicionados
Nikana Reklawyks,
1
@alternative, ainda assim, esta resposta pode ser melhor se você adicionar um esclarecimento para "todos os arquivos que conhece" .....
Pacerier
2
@Pacerier equivalente agit add -u
alternativa
2
@ Z.Khullah, então "todos (...)" significa "arquivos rastreados"?
TheFrost
1
@TheFrost precisamente!
Z. Khullah
1

Usando a opção git commit -a com o comando commit para "adicionar" automaticamente as alterações de todos os arquivos conhecidos (ou seja, todos os arquivos que já estão listados no índice)

Dilip
fonte