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 # в стеке.