Я припускав, що обидва працюють однаково. Обидва файли додають кожен файл до індексу. Але я, здається, помиляюся.
- Яка різниця між
git add .
таgit add -u
?
Відповіді:
Це один із git gotchas, згаданих тут (до 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
" (без pathspec) оновлювати індекс лише для шляхів у поточному підкаталозі, щоб почати тренувати пальці явно вимовляти "git add -u .
" коли вони мають на увазі це до появи Git 2.0.
Як я вже згадував у " е "
.
(pathspec) з Git 2.x. Це працює знайти, коли я тестував.
git add .
додає всі зміни до індексу, оскільки -A
параметр є типовим. Перевірте цей відповідь stackoverflow.com/a/26343584/524588
Як в інструкції сказано: git add .
додасть усі файли в поточному каталозі, тоді як git add -u .
додасть лише ті, які вже відстежуються.
add -u
також буде інсценувати видалення.
git add .
додати всі файли з поточного каталогу
git add -u
лише файли оновлення, які відстежуються в даний час.