Git rebase冲突无法工作

11

我有一个远程代码库。 我进行以下操作:

git clone https://mylogin@bitbucket.org/mylogin/myrepo.git
Clone成功。 我有Git树:
C(master)
|    B:A
|   /
B /
|
A
|
A0
|
A01(origin/head)(origin/master)
|
(一些提交)

我需要:
                B:A
C(master) / 

我需要将分支B rebase到C(master) 我的操作:

git checkout b1
Switched to branch 'b1'
git rebase master
First, rewinding head to replay your work on top of it...
Applying: B:A
Using index info to reconstruct a base tree...
M   index1.txt
Falling back to patching base and 3-way merge...
Auto-merging index1.txt
CONFLICT (content): Merge conflict in index1.txt
Failed to merge in the changes.
Patch failed at 0001 B:A
The copy of the patch that failed is found in:
   /pth/to dir/.git/rebase-apply/patch

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

git branch
* (no branch)
  b1
  master

我该怎么做? 我可以切换到b1分支,解决冲突并提交,但这并没有帮助(我已经测试过了)。

1个回答

28

如果Git检测到无法自动解决的冲突,它将停止rebase操作。在您的情况下,您的文件index1.txt中存在冲突(您可以在输出中看到它,并且稍后在运行git status时也会看到)。在继续之前,您必须修复冲突。编辑该文件,您会看到标记<<<<<<======>>>>>>。冲突位于这些行中,在<=之间的是主分支中的更改,而在此之后(直到>)的是分支b1中的更改。修复它,删除git标记(<=>),然后运行git add index1.txt,并转到下一个文件(如果有的话,在此示例中仅存在index1.txt冲突)。完成添加所有文件后,请运行git rebase --continue。如果git遇到另一个冲突,只需为每个有问题的文件重复该过程。完成后,git会告诉您已成功完成rebase,您将回到分支b1。如果要停止该过程并返回到原始b1(在rebase命令之前),只需运行git rebase --abort

请记住,当您解决冲突时,不要编辑文件以使其符合最终提交的要求,而是只引入您想要进行特定提交的更改。其他更改将随着Git继续rebase和应用您的提交而添加。


不要编辑文件以符合最终提交的要求,而是只引入您想要进行的特定提交所需的更改。我在想为什么这些代码行还在那里,当我已经对它们进行了更改! - Swapnil
2
请注意,您应编辑有冲突的文件(在您的情况下为index1.txt),而不是patch文件。如果您不确定正在重新基于哪个更改,则可以参考patch文件。 - Tor Klingberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接