В чем разница между `git add. и в Git добавить -у`?


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

  • в чем разница между git add . и git add -u?
3 61

3 ответа:

это один из git gotchas упомянутые здесь (pre 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> " to добавить только добавленные или измененные пути в <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 "(без pathspec) обновление индекса только для путей в текущем подкаталоге, чтобы начать обучение их пальцы, чтобы явно сказать"git add -u .", когда они имеют в виду, прежде чем в Git 2.0 приходит.

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

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

git добавить documentaiton

git add . 

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

git add -u 

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