这是后面的故事:
上周五,在/some-branch
上做了一些工作后,我做了一个git stash save
,检查了/another-branch
,然后检查了git stash pop
,一切都转到了地狱。在尝试恢复我收起的更改失败后,我关闭了终端。现在我想再试一次。
根据我的理解,如果我们不进行垃圾收集,那些我发现的更改对应于我在运行dangling blob
时看到的git fsck --no-reflog
的哈希值。那么我怎样才能弄清楚哪一个对应于上周五的那个藏匿处,以及如何让它恢复生机。或者我可以,而且我已经失去了所有这些变化? :(
答案 0 :(得分:0)
您是否尝试过git status
和/some-branch
中的/another-branch
来确保更改不在您的工作目录中?
如果证明没有结果,请尝试从两个分支git fsck --unreachable
。更改可能会消失,但前提是您在隐藏更改之前已经完成了reset
或pull
之类的操作。
答案 1 :(得分:0)
你实际上正在寻找一个悬挂的提交,而不是悬挂的blob。如果您运行git fsck
并拥有(小)一组悬空提交,则可以使用git cat-file -p <commit id>
检查每个提交,并查看是否有任何提交看起来像您保存的提交。如果你有很多提交,那可能会有很多工作。
另一种选择是,如果您仍有任何剩余物,请运行git reflog refs/stash
以查看您已创建的藏匿处的历史记录。不幸的是,一旦你弹出最后一个藏匿点,这些日志就会被删除,所以你可能没有它。
使用上述方法之一找到正确的提交ID后,您可以git checkout <commit id>
或git branch newbranch <commit id>
直接签出提交,或创建指向的新分支提交。