В чем разница между `git add .` и` git add -u`? - PullRequest
67 голосов
/ 03 февраля 2010

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

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

Ответы [ 3 ]

69 голосов
/ 03 февраля 2010

Это одна из упомянутых здесь мерзавцев (до 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.

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

21 голосов
/ 03 февраля 2010

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

12 голосов
/ 03 февраля 2010

добавить добавить документ

git add . 

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

git add -u 

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

...