根据git 文档,git stash list
将接受您可以传递给的任何选项git log
。
我想要做的是将--stat
选项传递给git stash list
. 这可行,但是它似乎显示了存储库中的每个文件。
现在,我知道有一个git stash show
只会显示那些已更改的文件,但我需要手动检查并检查每个文件。
有什么方法可以让 git 向我显示存储列表,只显示每个存储的更改?
Git v2.2 及以后的更新:
git stash list --stat
作品。
自从提出问题以来,情况发生了变化,OP 的困境不再适用。从 Git v2.2 开始,您可以简单地传递--stat
给git 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
(在 Git Bash msysgit 中测试。)
git stash show $STASH
而不是git diff --stat $STASH~..$STASH
也有效,但速度慢得令人难以忍受。
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
...
git stash show -p
以补丁形式显示存储是我相信你所要求的。
对于特定的存储,您可以执行以下操作:git stash show -p stash@{x}
其中 x 是堆栈上的存储 #。
如果列出一个存储的所有文件,例如最新的存储,使用
git show stash@{0} --stat