Linux
如何從 git diff 添加文件列表
我不小心在 repo 中添加了一堆記憶體文件。我現在已經刪除了它們,現在想將更改送出到 repo。
所以我嘗試執行以下操作,但 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
因為還有一些我不想送出的其他更改。有沒有人必須做類似的事情並有解決方案。
謝謝
我在:達爾文核心版本 13.4.0 (Mac OSX 10.9.5)
更新
Git 互動式是目前可接受的替代方案。但有興趣了解如何走 xargs 路線。
git -i
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/' )
而不是使用 grep 使用命令的
-G
選項git diff
:git add --all $(git diff -G 'cache' --name-only)