提示:前端查漏补缺,仅代表个人观点
提示:可以通过git version
查看当前git版本信息
一、对于 Git Version 2.x
- 在 Git –version 2.x 中对
git add .
的功能做了改动,git add .
会提交当前工作区中当前目录(包括子目录)下所有的文件改动,不像在 Git –version 1.x 时那样不包括被删除的文件。
Git Version 2.x 中如果想在使用
git add .
时不提交被删除的文件,可以使用git add --ignore-removal
加上匹配符 .,即git add --ignore-removal .
。
- git add --ignore-removal 后的匹配符是可以更换的(但不能缺省),例如 git add --ignore-removal -A 可以实现在 git add -A 时不提交被删除的文件。
有些文章说在 Git –version 2.x 中
git add .
和git add -A
的功能变得完全相同,这是不对的。因为我们之前提到过,git add .
提交的文件改动受当前所在目录限制,它只会提交当前工作区中当前目录(包括子目录)下的文件改动,而git add -A
不受当前所在目录的限制,提交的是当前整个工作区
中所有的文件改动
git add *
git add * 表示添加当前目录(包括子目录)下的所有文件改动,但不包括文件名以 . 符号开头的文件的改动。这是Shell
命令,git 只是接收文件列表。而 git add . 的功能与 git add * 基本相同,只是 git add . 会将文件名以 . 符号开头的文件的改动也提交至暂存区。
二、总结详见下图:
三、对于 Git Version 1.x:
git add .
:会将当前工作区中当前目录(包括子目录)下的所有新文件和对已有文件的改动提交至暂存区,但不包括被删除的文件。git add -u
:git add --update 的简写形式,它只会监控当前整个工作区中之前已被 add 的文件,即已被跟踪(tracked)的文件,也就是只会将当前整个工作区中被修改和被删除的文件提交至暂存区。而新文件因为未被跟踪(untracked),所以不会被提交至暂存区。git add -A
:git add --all 的简写形式,它会将当前整个工作区中所有的文件改动提交至暂存区,包括新增、修改和被删除的文件,不受当前所在目录限制。
总结详见下图: