Qual é a diferença entre `git add .` e` git add -u`?

Eu estava assumindo que ambos funcionam da mesma maneira. Ambos adicionam todos os arquivos ao índice. Mas eu pareço errado.

  • Qual é a diferença entre o git add . e git add -u ?

É um dos git gotchas mencionados aqui (pre Git 2.0).

git add . apenas adiciona o que está lá, não o que foi excluído (se rastreado).

 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 cuidaria dos dois passos …


Com o Git 2.0, o git add -A é o padrão .

git add é o mesmo que ” git add -A ” agora, então ” git add dir/ ” irá notar caminhos que você removeu do diretório e registra a remoção.
Em versões mais antigas do Git, ” git add ” usado para ignorar remoções.

Você pode dizer ” git add --ignore-removal ” para adicionar apenas caminhos adicionados ou modificados em , se você realmente quiser.


Aviso ( git1.8.3 de abril de 2013, para o próximo git2.0 ).
Eu modifiquei minha resposta para dizer git add -u . , em vez de git add -u .:

git add -u irá operar na tree inteira no Git 2.0 para consistência com ” git commit -a ” e outros comandos.
Como não haverá nenhum mecanismo para fazer ” git add -u ” se comportar como ” git add -u . “, É importante para aqueles que estão acostumados a ” git add -u ” (sem pathspec) atualizar o índice apenas para caminhos em o subdiretório atual para começar a treinar seus dedos para explicitamente dizer ” git add -u . ” quando eles querem dizer antes do Git 2.0 chegar.

Como eu mencionei em ” e ”

Como o manual diz: git add . irá adicionar todos os arquivos em seu diretório atual, enquanto git add -u . só adicionará aqueles que já estão sendo rastreados.

git adicionar documentaiton

 git add . 

adicionar todos os arquivos do diretório atual

 git add -u 

atualizar apenas arquivos sendo rastreados atualmente.