恢复被丢弃的藏匿处

如果你刚刚弹出它并且终端仍然打开,你仍然会在屏幕上显示 git stash pop 打印的哈希值:

$ git stash pop
[...]
Dropped refs/stash@{0} (2ca03e22256be97f9e40f08e6d6773c7d41dbfd1)

(注意 git stash drop 也会生成相同的行。)

否则,你可以使用以下方法找到它:

git fsck --no-reflog | awk '/dangling commit/ {print $3}'

这将向你显示提交图提示中的所有提交,这些提交不再从任何分支或标记引用 - 每个丢失的提交(包括你创建的每个存储提交)都将位于该图中的某个位置。

找到所需存储提交的最简单方法可能是将该列表传递给 gitk

gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

这将启动一个存储库浏览器,显示存储库中的每个提交,无论它是否可访问。

如果你喜欢在一个单独的 GUI 应用程序上使用控制台上的漂亮图形,你可以用 git log --graph --oneline --decorate 替换 gitk

要查找存储提交,请查找此表单的提交消息:

somebranch 上的 WIP : commithash 一些旧的提交消息

一旦知道了所需提交的哈希值,就可以将其应用为存储:

git stash apply $stash_hash

或者你可以使用 gitk 中的上下文菜单为你感兴趣的任何无法访问的提交创建分支。之后,你可以使用所有常规工具随意执行任何操作。当你完成后,再次吹走那些树枝。