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

11

这是类似问题的变体,其中提交到了无头分支。我添加了这个问题来覆盖这种特殊情况。在我的情况下,问题如下:

  • 我进行了 git 子模块更新,这使得仓库处于无头状态(而我忘记再次检出到 master 分支)
  • 我提交了代码,事实上提交了几次
  • 当我准备推送到 Github 时,我意识到我处于无头状态,并切换到了 master 分支(Github 应用程序让它非常容易)

结果:我的提交现在在 Git 的地狱中。

1个回答

26

根据这里那里的答案,我找到了使用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...

我想要合并的是提交 fed7916master 分支。为此,我只需输入:

> git merge fed7916

合并过程没有问题(因为它是从 master 分支分离出来的),现在我的所有提交记录都可以访问,并且准备好被推送到 GitHub 上了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接