为什么git在2.0

时间:2018-04-10 02:20:25

标签: git

前几天,有人告诉我永远不要使用git add -A而是使用git add .

根据this SO

git 1.0git add .阶段仅新增和修改,已删除。

git 2.0中,git add .将所有文件包括删除,类似于git add -A

问题:

  1. git 2.0中,git add -Agit add .之间是否有任何功能差异?

  2. 如果没有,为什么版本2中的更新包含--ignore-removal作为选项并更改git add .的功能

1 个答案:

答案 0 :(得分:3)

对于第一个问题,请考虑以下示例:

git: myrepo/foo $ vim 1.c
git: myrepo/foo $ vim ../bar/2.c

现在当我git add .时,只会跟踪myrepo/foo/1.c,但不会跟踪myrepo/bar/2.cgit add -A。但是,git add .会跟踪两者。

如果您在工作树的顶层目录中发出git add -A,则与git add --help没有区别。如果您在子目录中,则不会成立。

对于问题2,老实说,我不知道为什么。我正在运行Git 2.17.0并从联机帮助页(--no-all, --ignore-removal Update the index by adding new files that are unknown to the index and files modified in the working tree, but ignore files that have been removed from the working tree. This option is a no-op when no <pathspec> is used. This option is primarily to help users who are used to older versions of Git, whose "git add <pathspec>..." was a synonym for "git add --no-all <pathspec>...", i.e. ignored removed files. ),我看到了这一点:

reactive()

它替代了从Git 1.0改变的功能。