從壞的 rebase 中恢復
假設你已經啟動了互動式 rebase:
git rebase --interactive HEAD~20
並且錯誤地,你壓扁或丟棄了一些你不想丟失的提交,但隨後完成了 rebase。要恢復,請執行 git reflog
,你可能會看到如下輸出:
aaaaaaa HEAD@{0} rebase -i (finish): returning to refs/head/master
bbbbbbb HEAD@{1} rebase -i (squash): Fix parse error
...
ccccccc HEAD@{n} rebase -i (start): checkout HEAD~20
ddddddd HEAD@{n+1} ...
...
在這種情況下,最後一次提交,ddddddd
(或 HEAD@{n+1}
)是你的 rebase 分支的提示。因此,要恢復該提交(以及所有父提交,包括意外壓扁或丟棄的提交),請執行以下操作:
$ git checkout HEAD@{n+1}
然後,你可以使用 git checkout -b [branch]
在該提交中建立一個新分支。有關更多資訊,請參閱分支 。