在提交更改之前,我一直在键入git add .
多年。根据我的理解(从下面的信息中),现代的等价物将是git add --ignore-removal <pathspec>
,这更加冗长。有没有办法恢复即将发布的 2.0版中的旧行为,或者至少在当前版本中将此消息静音?
$ git add .
warning: You ran 'git add' with neither '-A (--all)' or '--ignore-removal',
whose behaviour will change in Git 2.0 with respect to paths you removed.
Paths like 'log/sunspot-solr-development.log.lck' that are
removed from your working tree are ignored with this version of Git.
* 'git add --ignore-removal <pathspec>', which is the current default,
ignores paths you removed from your working tree.
* 'git add --all <pathspec>' will let you also record the removals.
Run 'git status' to check the paths you removed from your working tree.
答案 0 :(得分:5)
您看到的警告来自commit ccc663b,它会优化commit 45c45e3。
第二次提交确实提到了:
git add
:开始准备“git add <pathspec>...
”默认为“-A
”计划最终使“git add”假装在命令行上存在pathspec 时给出“
-A
”。要使转换发挥作用,当人们想要忽略“
git add --no-all subdir/
”之类的已删除路径或者说“subdir/z
”时,人们需要学会说“git add -A subdir/
”当他们想要整个目录的状态时。“
git add
”没有任何争论将继续是无操作。
因此现代等效的git add .
实际上是git add -A .
:请参阅“How to make Git “add --all
” by default?”。
我甚至不确定这意味着什么?任何人都知道他们为什么要做出这种改变?
我上面提到的提交说明了--ignore-removal
选项:
在没有“
git add subdir/
”或“-u
”选项的情况下运行“-A
”时,例如
$ edit subdir/x
$ create subdir/y
$ rm subdir/z
$ git add subdir/
该命令未注意到从工作树中删除路径(例如
subdir/z
)。
这有时会让新人感到困惑,因为可以说“git add
”被告知要记录整个“subdir/
”的当前状态,而不是工作树中与之匹配的路径的当前状态。 pathspec(后者按定义排除了“subdir/z
”的状态,因为它在工作树中不存在。)