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
在这种情况下似乎也很好。