忘了“git rebase --continue”并做了“git commit”。怎么修?

时间:2011-06-23 15:56:21

标签: git

我在git中重新定义代码,我遇到了一些合并冲突。我解决了冲突并做了:

git add

此时我忘记了:

git rebase --continue

我继续编码并做了:

git commit

进行更改。现在我在"no branch"并且不能这样做:

git rebase --continue 

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:171)

git reset --soft HEAD^。它将HEAD指针移动到其父级,但保留工作树并将合并更改添加到索引。因此,您可以像以前一样继续使用git rebase --continue进行变基。

答案 1 :(得分:10)

我必须尝试一下,但我认为这就是我要做的事情:

  1. 标记您的最新提交(或者只是在某处写下它的SHA1,这样您就不会丢失它):git tag temp
  2. git rebase --abort
  3. 再次进行改造。您必须再次解决合并问题。 :(
  4. git rebase --continue
  5. git cherry-pick temp
  6. 这个问题是你的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才起作用:我带着干净的工作树回到了开始进行重新设置之前。