Git: укажите только файлы, измененные для всех задержек

В соответствии с git docs, git stash list будет принимать любые параметры, которые вы могли бы передать на git log.

Что я хочу сделать, это передать параметр --stat на git stash list. Это работает, однако кажется, что он показывает каждый файл в репо.

Теперь я знаю, что есть git stash show, который покажет только те файлы, которые были изменены, но затем мне нужно вручную пройти и проверить каждый.

Есть ли способ получить git, чтобы показать мне список закладок, только с изменениями, которые были спрятаны для каждого из них?

Ответ 1

Обновление для Git v2.2 и выше:

С тех пор как вопрос был задан, все изменилось, и дилемма ОП больше не применяется. Начиная с Git v2.2, вы можете просто передать --stat в git stash list и он будет вести себя так, как ожидается.

Вы также можете использовать любые другие параметры --raw файлов, такие как --name-status, --name-only и --raw доступные для git log.

Оригинальный ответ ниже применяется, если вы используете версию Git до v2.2.

Оригинальный ответ:

Вот так я думаю:

git stash list | while IFS=: read STASH ETC; do echo "$STASH: $ETC"; git diff --stat $STASH~..$STASH --; done

(Проверено в Git Bash msysgit.)

git stash show $STASH вместо git diff --stat $STASH~..$STASH также работал, но был невыносимо медленным.

Ответ 2

git stash list --name-status

Выход:

[email protected]{0}: WIP on branch-name: face0ff97 Commit message

M       path/to/modified/file.cpp
A       path/to/added/file.xml
D       path/to/deleted/file.kt
[email protected]{1}: WIP on branch-name: 953add384 Commit message

...

Ответ 3

git stash show -p, чтобы показать, что stash в форме патча, о котором я думаю, вы просите.

Для конкретного кошелька вы можете сделать следующее: git stash show -p [email protected]{x} где x - это stash # в стеке.