git:列出为所有stashes修改的文件

Nat*_*ugh 22 git

根据git文档,git stash list将接受您可以传递给的任何选项git log.

我想要做的是将--stat选项传递给git stash list.这有效,但它似乎显示了回购中的每个文件.

现在,我知道有一个git stash show将显示已更改的文件,但我需要手动检查每个文件.

有没有什么方法可以让git向我展示一下stashes列表,只是为每一个存储的更改?

ant*_*tak 22

Git v2.2以后的更新:

git stash list --stat 作品.

自提出问题以来,情况发生了变化,OP的困境不再适用.从Git v2.2开始,你可以简单地传递--statgit stash list它,它将表现得像直觉一样.

您还可以使用任何其他文件的列表选项,例如--name-status,--name-only--raw提供给git log.

如果您在v2.2之前使用的是Git版本,则以下原始答案适用.

原始答案:

像这样我想:

git stash list | while IFS=: read STASH ETC; do echo "$STASH: $ETC"; git diff --stat $STASH~..$STASH --; done
Run Code Online (Sandbox Code Playgroud)

(在Git Bash msysgit中测试过.)

git stash show $STASH而不是git diff --stat $STASH~..$STASH也工作但是无法忍受的缓慢.


Nol*_*Amy 6

git stash list --name-status

输出:

stash@{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
stash@{1}: WIP on branch-name: 953add384 Commit message

...
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案兄弟 (2认同)

TOT*_*OTA 5

git stash show -p我相信您正在要求以补丁形式显示藏匿处。

对于特定的存储,您可以执行以下操作:git stash show -p stash@{x}其中 x 是堆栈上的存储 #。