恢复 git rebase 的合并状态
Recover merge state of a git rebase
我正处于 git 变基过程中,具有以下历史记录:
edit eac4848
join 84945e5
done ed60fdd
done 1c6399a
如您所见,提交 1c6399a
和 ed60fdd
已完成,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
现在对变基重复相同的步骤,避免犯同样的错误。
我正处于 git 变基过程中,具有以下历史记录:
edit eac4848
join 84945e5
done ed60fdd
done 1c6399a
如您所见,提交 1c6399a
和 ed60fdd
已完成,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
现在对变基重复相同的步骤,避免犯同样的错误。