使用 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 树以匹配该点(请参阅撤消更改)。
如果你在另一个分支上重新定位时暂时看到分支的工作情况,但你不想保留结果,则可以使用此方法。