В чем разница между `git add .` и`git add -u`?

Я предполагал, что оба работают одинаково. Оба добавляют каждый файл в индекс. Но я, похоже, ошибаюсь.

  • В чем разница между git add . а также git add -u?

3 ответа

Решение

Это одна из мерзавцев, упомянутых здесь (до Git 2.0).

git add . добавляет только то, что есть, а не то, что было удалено (если отслежено).

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 позаботится об обоих шагах...


С Git 2.0, git add -A по умолчанию.

git add <path> такой же как " git add -A <path> "сейчас, так что" git add dir/ "заметит пути, которые вы удалили из каталога, и запишет удаление.
В старых версиях Git " git add <path> "раньше игнорировал удаления.

Ты можешь сказать " git add --ignore-removal <path> "добавлять только добавленные или измененные пути в <path>, если вы действительно хотите.


Предупреждение ( git1.8.3 Апрель 2013, для предстоящего git2.0).
Я изменил свой ответ, чтобы сказать git add -u ., вместо git add -u.:

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

Как я уже упоминал в " е "

Как сказано в руководстве: git add . добавит все файлы в текущем каталоге, а git add -u . будет добавлять только те, которые уже отслеживаются.

мерзавец добавить документацию

git add . 

добавить все файлы из текущего каталога

git add -u 

только файлы обновлений, которые отслеживаются в данный момент.

Другие вопросы по тегам