使用 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 樹以匹配該點(請參閱撤消更改)。
如果你在另一個分支上重新定位時暫時看到分支的工作情況,但你不想保留結果,則可以使用此方法。