在提交更改之前,我已经输入git add .
很多年了。根据我的理解(从下面的消息中),现代的对等物是git add --ignore-removal <pathspec>
,它稍微冗长一些。是否有办法在即将到来的 2.0版本的git中恢复到旧的行为,或者至少在当前版本中沉默此消息?
$ 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.
您看到的警告来自commit ccc663b,它改进了commit 45c45e3。
第二次提交确实提到了:
git add
:开始准备"git add <pathspec>...
";默认为"-A
"
计划最终制作"git add"假装好像"
-A
";当命令行上有路径说明时给出。为了让这种转变有效,人们需要学会说"
git add --no-all subdir/
";当他们想要忽略像"subdir/z
",或者说"git add -A subdir/
";当他们想把目录的状态作为一个整体。"
git add
";如果没有任何参数,将继续为no-op
所以git add .
的现代版本实际上是git add -A .
:参见"如何使Git默认为add --all
?"
Meltemi评论
我甚至不确定这是什么意思?有人知道他们为什么要做这个改变吗?
我上面提到的提交说明了--ignore-removal
选项:
当";
git add subdir/
";运行时没有"-u
";或";-A
";选项,例如
$ edit subdir/x
$ create subdir/y
$ rm subdir/z
$ git add subdir/
命令不会注意到从工作树中删除路径(例如
subdir/z
)。
这有时会让新手感到困惑,可以说是";git add
";被告知记录"的当前状态。subdir/
";作为一个整体,不是工作树中存在的与该路径规范匹配的路径的当前状态(后者根据定义排除了"subdir/z
";因为在工作树中不存在)。