Git stash: 如何查看分支中是否有暂存的更改

23

假设我在主分支之外的一个叫做“my_new_stuff”的分支上。 我觉得我可能已经藏了些东西在那里。 我担心如果我执行git stash pop而我没有存储任何内容,它会将一堆不需要的东西推入我的工作文件夹。

我能查看是否存在已存储的更改而不将它们还原吗?

谢谢, Max


1
这里有一个 git stash show 子命令,看起来在这种情况下会很有用。 - gcbenison
@gcbenison - 我在我的分支中尝试了一下,它显示了三个文件。然后我切换到主分支并在那里尝试,结果显示相同的三个文件。我如何查看它们被藏在哪个分支中?存储是否与特定分支相关联? - Max Williams
1
Stashes 不与任何分支相关联。 - Peter Lundgren
2个回答

40

stash 存储快照的方式与 commit 相同。您可以使用以下命令查看 stash 的内容:

git stash list

您可以使用stash@{N}标记引用这些快照,也可以使用显示的哈希值。您可以使用任何适用于存储快照的 Git 命令。例如:

git diff master stash@{0}

如果您将最新的储藏应用于master分支,它将向其添加/删除什么内容。


10

虽然不完全是答案,但我根据Peter Lundgren的回答编写了一个小脚本,我觉得非常有用:当我切换分支时,它会告诉我是否已经存储了更改。

in .git/hooks/post-checkout

#!/bin/sh
branch=$(git rev-parse --abbrev-ref HEAD)
stashes=`git stash list | grep "WIP on $branch"`
if [ "$stashes" ]
then
  echo "You have the following stashes for this branch:"
  echo $stashes
fi

2
我想添加(至少在Windows上),使用引号,"$stashes" 会保留换行符。 - John Pavek
1
您可以使用 git rev-parse --abbrev-ref HEAD 作为获取分支名称更加便携和稳定的方式。 - Will Norvelle

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