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

cha*_*les 5 git

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

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

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

cha*_*les 18

根据这里那里的答案,我找到了出路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...
Run Code Online (Sandbox Code Playgroud)

提交fed7916是我要合并的提交master.为此,我只输入:

> git merge fed7916
Run Code Online (Sandbox Code Playgroud)

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