如何在git子模块更新和结账后恢复丢失的提交?

时间:2013-09-27 15:55:03

标签: git

这是类似问题的变体,其中提交最终在无头分支中。我正在添加这个问题来涵盖这个特殊情况。就我而言,问题如下:

  • 我做了一个git子模块更新,这使得存储库处于无头状态(我忘了再次检查以掌握)
  • 我提交了代码,实际上有几次提交
  • 当我要推送到github时,我意识到我处于无头状态,并切换到master分支(github应用程序使其变得如此简单)

结果:我的提交现在处于git limbo。

1 个答案:

答案 0 :(得分:17)

根据答案herethere,我找到了使用git reflog的方法:

> git reflog
6b0da0d HEAD@{0}: rebase finished: returning to refs/heads/master
6b0da0d HEAD@{1}: pull --rebase --progress --prune --recurse-submodules=on-demand origin: check
d55ecfb HEAD@{2}: checkout: moving from fed7916169d740644dbbd9ea48e2d2cd510ce32d to master
fed7916 HEAD@{3}: commit: more secret stuff.
818bf20 HEAD@{4}: commit: incredible stuff I am doing, hopefully won't end up in limbo.
...etc...

提交fed7916是我要合并到master的提交。为此,我只需键入:

> git merge fed7916

合并没有问题(因为它无论如何从master所在的地方分支出来)并且我的所有提交现在都可以再次访问,并准备被推送到github。