使用 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 樹以匹配該點(請參閱撤消更改)。

如果你在另一個分支上重新定位時暫時看到分支的工作情況,但你不想保留結果,則可以使用此方法。