恢复被丢弃的藏匿处
如果你刚刚弹出它并且终端仍然打开,你仍然会在屏幕上显示 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
中的上下文菜单为你感兴趣的任何无法访问的提交创建分支。之后,你可以使用所有常规工具随意执行任何操作。当你完成后,再次吹走那些树枝。