我可以应用更改吗?



这是背景故事:

上周五,在/some-branch做了一些工作后,我做了一个git stash save,检查了/another-branch,然后是git stash pop,一切都下了地狱。在尝试恢复我藏匿的更改失败后,我关闭了终端。现在我又想这样做了。

据我了解,我存储的那些更改,如果它们不是垃圾回收的,对应于我在运行git fsck --no-reflog时看到的dangling blob的哈希值。那么我怎样才能弄清楚哪一个对应于上周五的那个藏匿处,以及如何让它起死回生。还是我不能,我已经失去了所有这些变化?:(

您是否尝试过从/some-branch/another-branch git status以确保更改不在工作目录中?

如果事实证明没有成效,请尝试从两个分支git fsck --unreachable。更改可能会消失,但前提是您在存储更改之前已经执行了诸如resetpull之类的操作。

你实际上是在寻找一个悬空的提交,而不是一个悬空的斑点。 如果您运行了git fsck并且有一组(小)悬空提交,则可以使用 git cat-file -p <commit id> 检查每个提交,看看这些提交中是否有任何看起来像您存储的提交。 如果你有很多提交,那可能是很多工作。

另一种选择是,如果仍有任何存储,请运行git reflog refs/stash以查看已创建的存储的历史记录。 不幸的是,一旦您弹出最后一个藏匿处,这些日志就会被删除,因此您可能没有它可用。

使用上述方法之一找到正确的提交 id 后,您可以git checkout <commit id>git branch newbranch <commit id>直接签出提交,或创建一个指向该提交的新分支。

相关内容

最新更新