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

时间:2013-02-06 18:45:22

标签: git

根据git docsgit stash list将接受您可以传递给git log的任何选项。

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

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

有没有办法让git向我显示存储列表,只是每个存储的更改?

4 个答案:

答案 0 :(得分:14)

Git v2.2以后的更新:

git stash list --stat有效。

Things have changed问题被提出后,OP的困境不再适用。从Git v2.2开始,你可以简单地将--stat传递给git stash list,它的行为就像直觉一样。

您还可以使用--name-status可用的任何其他文件列表选项,例如--name-only--rawgit log

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

原始回答:

我猜是这样的:

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也起作用,但速度慢得无法忍受。

答案 1 :(得分: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

...

答案 2 :(得分:4)

git stash show -p以补丁形式显示存储,我相信你要求它。

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

答案 3 :(得分:0)

如果列出所有文件的一个存储区,例如最新的存储,使用

  

git show stash @ {0} --stat