11

我有远程存储库。我愿意:

git clone https://mylogin@bitbucket.org/mylogin/myrepo.git

克隆成功。我有 git 树:
C(master)
| B:A
| /
乙 /
|
一个
|
A0
|
A01(原点/头)(原点/主)
|
(一些提交)

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

我需要将分支 B 重新设置为 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,解决冲突并提交,但这无济于事(我测试过)。

4

1 回答 1

28

如果 Git 检测到无法自动解决的冲突,它将停止变基。在您的情况下,您在文件中有冲突index1.txt(您可以在输出中看到它,稍后在运行时也可以看到git status)。在继续之前,您必须解决冲突。编辑文件,你会看到<<<<<<,======>>>>>>标记。冲突出现在这些行中,其中 the<和 the之间=是 master 中的更改,之后(直到>)是 branch 中的更改b1。修复它,删除 git 标记(<, =, >),然后运行git add index1.txt​​,然后继续下一个文件(如果有的话,在这个例子中只有index1.txt冲突)。添加完所有文件后,运行git rebase --continue. 如果 git 遇到另一个冲突,只需为每个有问题的文件重复该过程。完成后,git 会告诉您 rebase 已成功完成,您将回到 branch b1。如果您想停止该过程并返回原始b1状态(在 rebase 命令之前),只需运行git rebase --abort.

请记住,当您修复冲突时,不要将文件编辑为最终提交中应有的样子,而仅引入您想要针对该特定提交进行的更改。随着 git 继续变基和应用您的提交,将添加其他更改。

于 2013-10-18T11:47:34.897 回答