git:列出所有存储的更改文件清单

35
根据 Git 文档git stash list 可以接受传递给 git log 的任意选项。
我的目的是将 --stat 选项传递给 git stash list。虽然这样做可以达到目的,但它似乎会显示仓库中的每个文件。
现在,我知道有一个 git stash show 可以只显示已更改的文件,但我需要手动检查每个文件。
是否有一种方法可以让 Git 显示包含每个打存贮的变更内容的清单?
4个回答

46

从Git v2.2开始更新:

git stash list --stat可行。

自问题被提出以来,有些事情发生了变化,OP的困境不再存在。从Git v2.2开始,您可以简单地传递--statgit stash list,它将按直觉预期运行。

您还可以使用任何其他文件列表选项,例如--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也可以工作,但速度极慢。


14

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

...

5

git stash show -p命令可以以补丁形式显示存储的内容,我想这就是你要求的。

如果要查看特定的stash,请使用以下命令:git stash show -p stash@{x}其中x是堆栈上stash的编号。


抱歉,如果我的帖子让你感到困惑。我想要与git stash show(或者git log --stat)相同的行为,但不想一个一个地指定。 - Nate Cavanaugh
你需要创建一个脚本。 - Hola Soy Edu Feliz Navidad
1
此外,如果只想列出特定存储的文件,可以使用 git stash show -p stash@{x} --name-only 命令。 - Ben Creasy

1
如果要列出一个储藏中的所有文件,例如最新的储藏,请使用:

git show stash@{0} --stat


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接