我正在试图改变'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".
有什么想法吗?
答案 0 :(得分:159)
有几种情况我看到rebase
卡住了。一种情况是,如果更改变为空(提交已经在先前在rebase中进行了更改),在这种情况下,您可能必须使用git rebase --skip
。
这很容易辨别。如果您执行git status
,则不应显示任何更改。如果是这样,请跳过它。如果不是这种情况,请发布git status
的副本,我可以尝试进一步提供帮助。
答案 1 :(得分:11)
我遇到此问题的有一次是在git commit
后执行git add
时。因此,以下序列将产生您提到的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
似乎也适用于这种情况。
答案 2 :(得分:6)
注意:Git 2。0。2(2014年7月)修复了一个案例,其中git rebase --skip
将被卡住,并且无法继续使用当前的rebase。
请commit 95104c7
bk2204
)
rebase--merge
:修复--skip
连续两次冲突如果
git rebase --merge
遇到冲突,如果下一次提交也存在冲突,--skip
将无效。。
msgnum
文件永远不会使用新的修补程序编号进行更新,因此实际上不会跳过任何修补程序,从而导致不可避免的循环。更新
msgnum
文件的值作为call_merge中的第一件事。
这也避免了在跳过提交时出现“Already applied
”消息 调用call_merge的其他上下文没有明显的变化,如 在这些情况下,msgnum文件的值保持不变。
答案 3 :(得分:3)
$ vi src/com.... { verified, no >>> or <<< left, no merge markers }
$ git rebase --continue
您似乎忘记了git add
您的更改......
答案 4 :(得分:0)
在进行了许多冲突(长git status
)的冲突之后,我不知道应该上演什么。我使用了与PhpStorm集成的Git,它没有显示任何未暂存的文件。
git add .
不能解决问题,但this comment建议致电
git diff-files --ignore-submodules
。那显示了我必须专门git add的三个文件,并且成功了。