Этот ответ относится только к Git версии 1.x . Для Git версии 2.x см. Другие ответы.
Резюме:
git add -A
этапы все изменения
git add .
создает новые файлы и модификации, без удалений
git add -u
этапы модификации и удаления, без новых файлов
Detail:
git add -A
эквивалентно git add .; git add -u
.
Важным моментом в отношении git add .
является то, что он смотрит на рабочее дерево и добавляет все эти пути к поэтапным изменениям, если они либо изменены, либо являются новыми и не игнорируются, он не выполняет никаких действий 'rm'. 1045 *
git add -u
просматривает все отслеженные файлы уже и вносит изменения в эти файлы, если они отличаются или были удалены. Он не добавляет никаких новых файлов, он только вносит изменения в уже отслеженные файлы.
git add -A
- это удобный ярлык для выполнения обоих этих действий.
Вы можете проверить различия с помощью чего-то подобного (обратите внимание, что для Git версии 2.x ваш вывод для git add .
git status
будет отличаться):
git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial
echo OK >> change-me
rm delete-me
echo Add me > add-me
git status
# Changed but not updated:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git add .
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# Changed but not updated:
# deleted: delete-me
git reset
git add -u
git status
# Changes to be committed:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git reset
git add -A
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# deleted: delete-me