Git 恢复丢失的stash

示例

如果仅弹出它,并且终端仍处于打开状态,则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}' )

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

您可以将其替换gitk为类似的内容,例如git log --graph --oneline --decorate,您更喜欢控制台上的图形而不是单独的GUI应用程序。

要发现隐藏提交,请查找以下形式的提交消息:

        在somebranch执行WIP :commithash一些旧的提交消息

知道所需提交的哈希之后,就可以将其作为存储应用:

git stash apply $stash_hash

或者,您可以使用上下文菜单中的gitk来创建您感兴趣的所有无法访问的提交的分支。之后,您可以使用所有常规工具对它们进行任何操作。完成后,只需将这些分支吹走即可。

以上是 Git 恢复丢失的stash 的全部内容, 来源链接: utcz.com/z/337925.html

回到顶部