Git 重建基合并冲突无法继续

我试着重新定位“ 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".

有什么想法吗?

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

看起来你忘了 git add你的变化..。

有几种情况下,我看到 rebase卡住了。一种情况是,如果更改为 null (提交的更改已经在 rebase 中进行了) ,那么您可能必须使用 git rebase --skip

很容易看出来。如果你做 git status它应该显示没有变化。如果是这样,那就跳过它。如果不是这样的情况下,请张贴 git status的副本,我可以尝试进一步帮助。

注意: Git 2.0.2(2014年7月)已经修复了一个案例,即 git rebase --skip会卡住,无法继续使用当前的 rebase。
参见布莱恩 · M · 卡尔森(Brian M. Carlson)(bk2204)

rebase--merge: 用一行中的两个冲突修复 --skip

如果 git rebase --merge遇到冲突,则为 如果下一个提交也发生冲突,则 --skip将无法工作
msgnum文件永远不会使用新的补丁号更新,因此实际上不会跳过任何补丁,从而导致不可避免的循环。

msgnum文件的值更新为 call _ merge 中的第一件事。
这也避免了跳过提交时出现“ Already applied”消息。
调用 call _ merge 的其他上下文没有可见的更改,如 在这些情况下,msgnum 文件的值保持不变。

我遇到这个问题的一次是在 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与“所有”选项正在创建一个类似的情况。(请注意,我在 git 方面非常缺乏经验,所以这个答案可能不正确。)为了安全起见,git rebase --skip似乎在这种情况下也能很好地工作。

经过一个充满冲突的重新基地(长 git status)之后,我不知道我应该上演什么。我使用 Git 集成了 PhpStorm,它没有显示任何非现场文件。

git add .没有解决这个问题,但是 此评论建议打电话 这显示了三个文件,我必须特别 git 添加,这是一个诀窍。