问题描述
此答案仅适用于Git 版本 1.x。对于 Git 版本 2.x,请参阅其他答案。
git add -A
相当于 git add .; git add -u
。
重要的一点git add .
是,它查看工作树并将所有这些路径添加到暂存更改中,如果它们已更改或是新的且未被忽略,它不会暂存任何“rm”操作。
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
Git 版本 1.x
命令 | 新文件 | 修改文件 | 已删除的文件 | 描述 |
---|---|---|---|---|
git add -A |
✔️ | ✔️ | ✔️ | 暂存所有(新的、修改的、删除的)文件 |
git add . |
✔️ | ✔️ | ❌ | 仅在当前文件夹中暂存新文件和修改文件 |
git add -u |
❌ | ✔️ | ✔️ | 仅暂存修改和删除的文件 |
Git 版本 2.x
命令 | 新文件 | 修改文件 | 已删除的文件 | 描述 |
---|---|---|---|---|
git add -A |
✔️ | ✔️ | ✔️ | 暂存所有(新的、修改的、删除的)文件 |
git add . |
✔️ | ✔️ | ✔️ | 在当前文件夹中暂存所有(新的、修改的、删除的)文件 |
git add --ignore-removal . |
✔️ | ✔️ | ❌ | 仅暂存新文件和修改后的文件 |
git add -u |
❌ | ✔️ | ✔️ | 仅暂存修改和删除的文件 |
长格式标志:
-
git add -A
相当于git add --all
-
git add -u
相当于git add --update
解决方法
该命令git add [--all|-A]
似乎与 相同git add .
。这个对吗?如果不是,它们有何不同?