“git add -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 版本 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 .。这个对吗?如果不是,它们有何不同?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...