我在git中重新定义代码,我遇到了一些合并冲突。我解决了冲突并做了:
git add
此时我忘记了:
git rebase --continue
我继续编码并做了:
git commit
进行更改。现在我在"no branch"
并且不能这样做:
git rebase --continue
我该如何解决这个问题?
答案 0 :(得分:171)
做git reset --soft HEAD^
。它将HEAD指针移动到其父级,但保留工作树并将合并更改添加到索引。因此,您可以像以前一样继续使用git rebase --continue
进行变基。
答案 1 :(得分:10)
我必须尝试一下,但我认为这就是我要做的事情:
git tag temp
git rebase --abort
git rebase --continue
git cherry-pick temp
这个问题是你的temp
提交可能包含合并的解决方案和新代码。所以它可能会很棘手,但我会试一试,看看它是否有效。
答案 2 :(得分:0)
我遇到了同样的问题,更糟糕的是,我重新确定了三个提交,在解决了第二个提交的冲突之后,我“提交了”而不是“重新设置--continue”。
结果,我有了这个git reflog
当我应用kirikaza的解决方案时,我只是还原了第三次提交,而不是第二次提交,这是有问题的。
如您所见,rebase首先从remotes / origin / master分支中进行检出,然后应用我的三个提交,它们在reflog中显示为前三个操作(在检出之前)。
然后,如果要从干净的基础重新启动,则在重新进行基础设置之前,只需在重新设置基础操作结帐之前将硬复位为哈希即可。就我而言(参见图片):
git reset --hard 859ed3c
然后您可以开始一个新的git rebase
。
答案 3 :(得分:0)
我重新设置了git的基础,修复了冲突,git添加了具有冲突的文件,并且(错误地)提交了
。我尝试了给出的git reset --soft HEAD^
和git reset --hard
解决方案,但都没有为我工作。
但是,git rebase --abort
才起作用:我带着干净的工作树回到了开始进行重新设置之前。