Linux

如何從 git diff 添加文件列表

  • August 16, 2021

我不小心在 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)

引用自:https://serverfault.com/questions/633222