2011-06-23 65 views
64

我在重新绑定代码,我有一些合并冲突。我解决了冲突并做了“git add”。此时我忘了做“git rebase --continue”。我继续编写代码并为这些更改做了“git commit”。现在我在“没有分支”,现在不能做“git rebase - continueue”。我该如何解决?忘记“git rebase --continue”并做了“git commit”。怎么修?

+1

'git status'说什么? – hvgotcodes

+0

#目前不在任何分支。 没有提交(工作目录清洁) – Abhilash

回答

17

我不得不尝试一下,但我认为这是我会做什么:

  1. 标签的最新提交(或只写了它的SHA1的地方,这样你就不会失去它): git tag temp
  2. git rebase --abort
  3. 再次进行rebase。你将不得不再次解决合并。 :(
  4. git rebase --continue
  5. git cherry-pick temp

这样做的问题是,你的temp承诺可能包含合并双方的分辨率,并将新的代码,因此它可能会非常棘手,但我会尝试,看看它是否工作。

+0

你可以像@MatrixFrog说的标签,或者你也可以将它作为补丁保存。然后,重做中止。检查状态以确保回购处于您知道没有问题的状态,然后开始提取和重新分配。 – yasouser

+6

不要这样做。请参阅下面的kirikaza的答案,以获得更简单/更清洁的方式。不要惹恼挑选和第二次解决冲突。 – tandrewnichols

+3

@Ahhilash请接受kirikaza的回答。我(和tandrewnichols一样)做到了这一点,并且有一个更简单的方法(和互联网似乎同意,因为答案有4倍upvotes)。 –

125

只是做git reset --soft HEAD^。它移动头指针其父但保持工作的树,并增加了合并更改索引。所以,你可以继续像以前一样git rebase --continue基础重建。

+0

这完全有效,也是我第一次找到--soft的用途。很高兴知道它是如何工作的,谢谢! – mmocny

+0

这真棒! –

+9

这是正确的答案球员 –