命令git add [--all|-A]
似乎与git add .
。它是否正确?如果没有,它们有何不同?
答案
这个答案仅适用于Git version 1.x。对于Git 2.x版本,请参见其他答案。
Summary:
git add -A
阶段all changesgit add .
分会新文件和修改,without deletions(在当前目录及其子目录中)。git add -u
阶段修改和删除,without new files
Detail:
git add -A
等同于git add .; git add -u
。
关于git add .
是它查看工作树,并将所有这些路径添加到上演的更改中,如果它们要么是新的或不忽略的,它不会进行任何" RM"动作。
git add -u
看上去已经跟踪文件并将更改分为这些文件,如果它们是不同的或已删除的文件。它不会添加任何新文件,仅将更改为已跟踪的文件。
git add -A
是做这两个方面的方便捷径。
您可以使用类似的内容来测试差异(请注意,对于Git版本2.x,您的输出git add .
git status
will不同):
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