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

发布时间 2023-10-27 11:46:19作者: 小满独家

内容来自 DOC[ https://q.houxu6.top/?s="git add -A" 和 "git add ." 的区别](https://q.houxu6.top/?s="git add -A" 和 "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
# 已更改但未更新:
# modified: change-me
# deleted: delete-me
# 未跟踪的文件:
# add-me

git add .
git status

# 待提交的更改:
# new file: add-me
# modified: change-me
# 已更改但未更新:
# deleted: delete-me

git reset

git add -u
git status

# 待提交的更改:
# modified: change-me
# deleted: delete-me
# 未跟踪的文件:
# add-me

git reset

git add -A
git status

# 待提交的更改:
# new file: add-me
# modified: change-me
# deleted: delete-me