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

时间:2013-05-29 07:08:05

标签: git

在提交更改之前,我一直在键入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.

1 个答案:

答案 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?”。

Meltemi comments

  

我甚至不确定这意味着什么?任何人都知道他们为什么要做出这种改变?

我上面提到的提交说明了--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”的状态,因为它在工作树中不存在。)