如何从 git diff 添加文件列表

如何从 git diff 添加文件列表

我意外地将一堆缓存文件添加到了存储库中。现在我已将其删除,并想将更改提交到存储库。

因此我尝试执行以下操作,但 git 似乎不喜欢它:

git diff --name-only | grep '/cache/' | xargs 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 'sym_online_app_bs3/cache/demo_cust_can_create_tickets' 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.

我不想这样做,git add --all因为还有一些其他的改变我还不想提交。

有没有人做过类似的事情并有解决方案。

谢谢

我使用的是:Darwin 内核版本 13.4.0(Mac OSX 10.9.5)

更新

目前,Git interactive 是一个可接受的替代方案。但我有兴趣了解如何使用 xargs 路线。

git -i

答案1

git add --all

git add --all <pathspec>

是不同的。

所以,

git diff --name-only | grep '/cache/' | xargs git add --all

就是你想要的。此外,git add可以在命令行上使用多个参数,因此你想要的可以用

git add --all $(git diff --name-only | grep '/cache/' )

答案2

不要使用 grep,而是使用-G命令选项git diff

git add --all $(git diff -G 'cache' --name-only)

相关内容