Как git добавить список файлов из 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 Kernel версии 13.4.0 (Mac OSX 10.9.5)

Обновить

Git Interactive является приемлемой альтернативой на данный момент. Но было бы интересно узнать, как идти по маршруту xargs.

git -i

2 ответа

Решение
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)
Другие вопросы по тегам