我意外地将一堆缓存文件添加到了存储库中。现在我已将其删除,并想将更改提交到存储库。
因此我尝试执行以下操作,但 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)