Git rebase合并冲突无法继续

我正在尝试重新设定'dev'以赶上'master'分支。

$ git checkout dev $ git rebase master First, rewinding head to replay your work on top of it... Applying: Corrected compilation problems that came from conversion from SVN. Using index info to reconstruct a base tree... M src/com/.... <stdin>:125: trailing whitespace. /** <stdin>:126: trailing whitespace. * <stdin>:127: trailing whitespace. */ <stdin>:128: trailing whitespace. package com.... <stdin>:129: trailing whitespace. warning: squelched 117 whitespace errors warning: 122 lines add whitespace errors. Falling back to patching base and 3-way merge... Auto-merging src/com/.... CONFLICT (content): Merge conflict in src/com/... Failed to merge in the changes. Patch failed at 0001 Corrected compilation problems that came from conversion from SVN. When you have resolved this problem run "git rebase --continue". If you would prefer to skip this patch, instead run "git rebase --skip". To check out the original branch and stop rebasing run "git rebase --abort". $ vi src/com/..... { fixed the merge issue on one file } $ git add -A . $ git rebase --continue src/com/....: needs merge You must edit all merge conflicts and then mark them as resolved using git add $ vi src/com.... { verified, no >>> or <<< left, no merge markers } $ git rebase --continue Applying: Corrected compilation problems that came from conversion from SVN. No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch. When you have resolved this problem run "git rebase --continue". If you would prefer to skip this patch, instead run "git rebase --skip". To check out the original branch and stop rebasing run "git rebase --abort". 

有任何想法吗?

有几个情况,我看到rebase卡住了。 一个是如果变化为空(一个提交有变化,以前已经在rebase中),在这种情况下,你可能不得不使用git rebase --skip

这很容易分辨。 如果你做的是git status它应该显示没有改变。 如果是这样,就跳过它。 如果不是这种情况,请发布git status的副本,我可以尝试进一步帮助。

注意:Git 2.0.2(2014年7月)已经修复了一个情况: git rebase --skip会卡住,并且不能继续使用当前的rebase。
见brian m 提交的95104c7 。 卡尔森( bk2204

rebase--merge :修复 – --skip连续两个冲突

如果git rebase --merge遇到冲突, 如果下一个提交也发生冲突,– git rebase --merge 将不起作用
msgnum文件永远不会用新的补丁号更新,所以实际上不会跳过补丁,导致不可避免的循环。

作为msgnum中的第一件事更新msgnum文件的值。
这也避免了一个“ Already applied ”的信息,当跳过提交。
对于调用call_merge的其他上下文没有明显的变化,因为在这些情况下msgnum文件的值保持不变。

 $ vi src/com.... { verified, no >>> or <<< left, no merge markers } $ git rebase --continue 

看起来你忘了git add你的更改…

我碰到这个问题的时候是在git add之后做一个git commit时候。 所以,下面的序列会产生你提到的rebase错误:

git add <file with conflict>
git commit -m "<some message>"
git rebase --continue

然而,下面的序列没有任何错误,并继续rebase:
git add <file with conflict>
git rebase --continue

git add -A和“All”选项可能会产生类似的情况。 (请注意,我在git方面经验不足,所以这个答案可能不正确)。为了安全起见, git rebase --skip在这种情况下似乎也很好。