git add. против git commit -a

Ответы:

139

git commit -aозначает почти [*] то же самое, что и git add -u && git commit.

Это не то же самое, git add .что добавление неотслеживаемых файлов, которые не игнорируются, а git add -uтолько этапы изменения (включая удаления) уже отслеживаемых файлов.

[*] Есть небольшая разница, если вы не находитесь в корневом каталоге вашего репозитория. git add -uэтапы обновление файлов в текущем каталоге и ниже, это эквивалентно git add -u .а git commit -aэтапы и фиксируют изменения в все отслеживаемые файлы.

CB Bailey
источник
3
Поведение в [*] изменится в git 2.0 для единообразия.
user1284631
2
В каком направлении? то есть коммит -a станет как add -u, или add -u станет как commit -a?
Miles Rout
5
@MilesRout: git add -uстанет похожим git commit -a; вам нужно будет прямо сказать git add -u ., что вы имеете в виду.
CB Bailey,
Это абсолютно то же самое, поскольку Git v 2.0 git add .ведет себя по-другому.
Николай Волынкин
13

git commit -aавтоматически вызывает git addвсе файлы, о которых он знает. Вы можете использовать git addдля выбора файлов для фиксации. Дополнительную информацию см. В документации: здесь

альтернатива
источник
11
мне очень непонятны все файлы, о которых он знает , тем более что они якобы НЕ были добавлены
Никана Реклавикс
1
@alternative, Тем не менее, этот ответ может быть лучше, если вы добавите пояснение для «всех файлов, о которых он знает» .....
Pacerier
2
@Pacerier эквивалентgit add -u
альтернатива
2
@ Z.Khullah, значит "все (...)" означает "отслеживаемые файлы"?
TheFrost
1
@TheFrost точно!
Z. Khullah
1

Используя переключатель git commit -a с командой commit для автоматического «добавления» изменений из всех известных файлов (то есть всех файлов, которые уже перечислены в индексе)

Дилип
источник