git - "git add -A"和 "git add ."之间的区别

标签 git git-add

git add [--all | -A] 之间有什么区别?和 git add .

最佳答案

此答案仅适用于 Git 版本 1.x。对于 Git 版本 2.x,请参阅其他答案。


总结:

  • git add -A 分阶段所有更改

  • git add . 暂存新文件和修改,不删除(在当前目录及其子目录上)。

  • git add -u 阶段修改和删除,没有新文件


详细信息:

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 - "git add -A"和 "git add ."之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/572549/

相关文章:

git - 禁用 git 添加。命令

git - 我如何 git 仅添加与模式匹配的行?

git - 将项目从 PVCS 转移到 Git

git - 不 merge

git - 如何将子模块添加到 gh-pages 分支并正确构建静态页面?

git - 从 Git 存储库中删除多个已从磁盘中删除的文件

git - 暂存删除的文件

git - 检查一个分支是否已经 merge 到 master 并且没有被恢复

git - 如何使用压缩的提交进行 rebase

git - 是否可以使用 “minimal”算法进行交互式添加?