172

我正在尝试重新设置“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".

有任何想法吗?

4

5 回答 5

280

有几种情况我看到rebase卡住了。一种是如果更改变为空(提交具有先前在 rebase 中所做的更改),在这种情况下您可能必须使用git rebase --skip.

这很容易说出来。如果你这样做git status,它应该不会显示任何变化。如果是这样,请跳过它。如果不是这种情况,请发布一份副本,git status我可以尝试进一步提供帮助。

于 2013-01-19T02:31:31.803 回答
18

我遇到此问题的一次是在执行 a git commitafter a时git add。因此,以下序列将产生您提到的变基错误:

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

同时,下面的序列运行没有任何错误,并继续变基:

git add <file with conflict>
git rebase --continue

使用“全部”选项可能会git add -A产生类似的情况。(请注意,我对 git 非常缺乏经验,所以这个答案可能不正确。)为了安全起见,git rebase --skip在这种情况下似乎也能很好地工作。

于 2016-07-16T01:14:17.853 回答
6

注意:Git 2.0.2(2014 年 7 月)修复了一种情况,即 agit rebase --skip会卡住并且无法继续使用当前的 rebase。
请参阅brian m提交 95104c7 。卡尔森 ( bk2204)

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

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

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

于 2014-08-03T17:46:19.017 回答
3
$ vi src/com....      { verified, no >>> or <<< left, no merge markers } 
$ git rebase --continue 

看起来你忘记了git add你的改变......

于 2013-01-19T02:12:37.183 回答
3

在经历了很多冲突(长git status)的变基之后,我无法弄清楚我应该上演的是什么。我使用与 PhpStorm 集成的 Git,它没有显示任何未暂存的文件。

git add .没有解决它,但此评论建议致电 git diff-files --ignore-submodules. 这显示了我必须专门 git add 的三个文件,并且成功了。

于 2020-10-12T12:35:20.267 回答