第51.1节:从糟糕的变基操作中恢复
假设你开始了一个交互式变基操作:
bash复制
git rebase --interactive HEAD~20
但不小心,你合并或删除了一些本不想丢失的提交,然后完成了变基。要恢复,可以执行 git reflog,可能会看到类似以下输出:
复制
aaaaaaa HEAD@{0} rebase -i (finish): returning to refs/heads/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})是你变基前分支的末端。因此,要恢复该提交(以及所有父提交,包括那些意外合并或删除的提交),可以执行:
bash复制
$ git checkout HEAD@{n+1}
然后,你可以使用 git checkout -b [branch] 在该提交处创建一个新分支。有关更多详细信息,请参阅“分支”部分。