前几天,有人告诉我永远不要使用git add -A
而是使用git add .
根据this SO,
在git 1.0
,git add .
阶段仅新增和修改,不已删除。
在git 2.0
中,git add .
将所有文件包括删除,类似于git add -A
问题:
在git 2.0
中,git add -A
和git add .
之间是否有任何功能差异?
如果没有,为什么版本2中的更新包含--ignore-removal
作为选项并更改git add .
的功能
答案 0 :(得分:3)
对于第一个问题,请考虑以下示例:
git: myrepo/foo $ vim 1.c
git: myrepo/foo $ vim ../bar/2.c
现在当我git add .
时,只会跟踪myrepo/foo/1.c
,但不会跟踪myrepo/bar/2.c
。git 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改变的功能。