git的快捷方式add——ignore-removal



在提交更改之前,我已经输入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";因为在工作树中不存在)。

最新更新