恢复 git rebase 的合并状态

Recover merge state of a git rebase

我正处于 git 变基过程中,具有以下历史记录:

edit eac4848
join 84945e5
done ed60fdd
done 1c6399a

如您所见,提交 1c6399aed60fdd 已完成,git 现在正在尝试应用提交 84945e5 但存在一些冲突。这是预料之中的,我只需要解决冲突并继续前进。

不幸的是,我调用了 git reset --hard,现在我的提交不见了:

edit eac4848
gone 84945e5
done ed60fdd
done 1c6399a

在初始合并冲突情况下,我应该使用什么命令来恢复我的工作目录?

我尝试调用以下命令:

$ git merge --squash --ff 84945e5

这种方法可行,但合并似乎没有考虑文件重命名。

答案隐藏在git rebase命令源代码中(写在shell中)。

只需使用以下命令挑选下一次提交:

$ git cherry-pick <NEXT_COMMIT>

你可以试试

git cherry-pick 84945e5

这只会重复 git rebase 已经做过的导致合并冲突的事情。

如果一切都失败了,你陷入了彻底的咆哮,你可以重新开始

git rebase --abort

现在对变基重复相同的步骤,避免犯同样的错误。