ti-enxame.com

O git commit -am é redundante, se eu adicionar o git antes?

É redundante executar git add . e depois git commit -am "commit message"?

Posso apenas executar git add . e depois git commit -m "commit message" ou, alternativamente, apenas git commit -am "commit message"?

37
Lee McAlilly

Git add + git commit -m apenas confirmará os arquivos que você adicionou (novos e rastreados anteriormente), mas git commit -am confirmará todas as alterações nos arquivos rastreados, mas não adicionará novos arquivos.

47
Tuminoid

Com o Git antes da versão 2.0, não é redundante executar git commit -am se você excluiu algum arquivo rastreado. Veja mais explicações das opções abaixo.

Enquanto você estiver no diretório raiz e quiser adicionar todos os novos arquivos, modificações e exclusões, você deseja ) abaixo.

1) Confirme novos arquivos e modificações nos arquivos rastreados anteriormente, mas não adicione exclusões .

Com Git <2.0:

$ git add .
$ git commit -m

Com Git> = 2.0:

$ git add --ignore-removal .
$ git commit -m

2) Confirme modificações e exclusões nos arquivos rastreados, mas não adicione novos arquivos .

$ git commit -am

) Confirme novos arquivos e todos os arquivos rastreados alterados (modificações e exclusões). Ou:

Com Git <2.0:

$ git add .
$ git commit -am

... Ou:

$ git add -A
$ git commit -m

Com Git> = 2.0:

$ git add .
$ git commit -m
28
Karl Horky

Na realidade, git commit -a nem sempre é redundante, pois também remove arquivos! Por exemplo, você tem dois arquivos: um arquivo é rastreado e o outro não. Agora você deseja excluir os rastreados (em todos os lugares) e adicionar os não rastreados.

Então você remove o arquivo rastreado. Se você usar apenas git add . e depois git commit rastreará o novo, mas não excluirá o arquivo antigo no repositório.

Então você executa git rm … ou usando git commit -a.

9
xZise

Acho que algumas das respostas anteriores não viram o período após git add (sua pergunta original e algumas das respostas foram editadas para tornar o período mais claro).

git add . adicionará todos os arquivos no diretório atual (e quaisquer subdiretórios) ao índice (exceto aqueles que são ignorados por .gitignore).

O -a opção para git commit incluirá todas as alterações nos arquivos que já estão sendo rastreados pelo git, mesmo que essas alterações ainda não tenham sido adicionadas ao índice.

Consequentemente, se todos os arquivos já estiverem sendo rastreados pelo git, as duas abordagens terão o mesmo efeito. Por outro lado, se novos arquivos foram criados, então git add .; git commit os adicionará ao repositório, enquanto git commit -a não vou.

git add .; git commit -a é realmente redundante. Todas as alterações já foram adicionadas ao índice, portanto, o -a faz nada.

4
Daniel Stutzbach

O -a switch diz ao git para preparar os arquivos modificados para adição - significa 'all' not 'add'. Se você não quiser adicionar o conteúdo de um novo arquivo ao git, adicione-o usando git add antes de enviá-lo.

Se você já fez um git add ., em seguida, ele já adicionou todos os arquivos no diretório atual, ou seja, arquivos novos e modificados. Portanto, você não precisa de um -a mude para o conteúdo do palco novamente. Portanto, você pode seguidamente segui-lo com um git -m "msg"

1
kashif