由于冲突解决得到了极大的错误,我在一个长期互动的rebase流程中流产。
我注意到,每次refase为git rebase --continue
d时,reflog都会引用。
如何从上一次成功的--continue
点恢复重新定位,以便保留以前的rebase冲突解决方案? (如果我从头再次运行rebase命令,我将不得不手动解决我第一次经历它时已经解决的所有冲突)
示例:
假设交互式rebase如下所示(其中000002已成功解析且0000004是如此彻底的灾难,导致rebase中止)
edit 000001 Edit to this commit
pick 000002 Easy merge conflict, resolved
pick 000003 Commit 3
pick 000004 Really ugly merge conflict, Abort!
pick 000005 Commit 5
reflog现在看起来像这样
HEAD@{0}: rebase: aborting
HEAD@{1}: rebase -i (pick): updating HEAD
HEAD@{2}: rebase -i (pick): updating HEAD
HEAD@{3}: rebase -i (edit): updating HEAD
HEAD@{4}: rebase -i (start): checkout 000000
我想要做的是git reset --hard HEAD@{1}
并继续原始的rebase过程,给出"真正难看的合并冲突"另一次尝试(继续选择000005)。
答案 0 :(得分:1)
Rebase没有内置任何内容来执行此操作,并且“正确”执行此操作有点棘手,但通过创建 new 分支指向可以轻松实现“错误”操作对你喜欢的rebase的一部分:
$('#register-form').on('submit', function(){
$(this).prop('disabled', true);
});
现在您可以查看分支$ git branch newbr HEAD@{1}
并使用newbr
启动丑陋合并冲突版本。缺点是您必须手动git cherry-pick
要引入的提交集(在本例中为4和5)。
(一旦你把所有东西都包含在新分支中,只需将原始分支重新指向新的最终提交 - 这是新分支的提示 - 就像git cherry-pick
成功时一样。然后,您可以删除新分支,因为您的手动模式rebase已完成。)