使用 reflog

如果你搞砸了一个 rebase,一个重新开始的选择就是回到 commit(pre rebase)。你可以使用 reflog(它包含你在过去 90 天内完成的所有事情的历史记录 - 这可以配置):

$ git reflog
4a5cbb3 HEAD@{0}: rebase finished: returning to refs/heads/foo
4a5cbb3 HEAD@{1}: rebase: fixed such and such
904f7f0 HEAD@{2}: rebase: checkout upstream/master
3cbe20a HEAD@{3}: commit: fixed such and such
...

你可以在 rebase 是 HEAD@{3} 之前看到提交(你也可以检查哈希):

git checkout HEAD@{3}

现在你创建一个新分支/删除旧分支/再次尝试 rebase。

你也可以直接重置回 reflog 中的某个点,但只有在你 100%确定它是你想要做的时才这样做:

git reset --hard HEAD@{3}

这将设置你当前的 git 树以匹配该点(请参阅撤消更改)。

如果你在另一个分支上重新定位时暂时看到分支的工作情况,但你不想保留结果,则可以使用此方法。