合并Git并解决任何冲突到当前分支

4

我有一个主分支,还有一个名为'bob'的分支。

我在两个分支上进行了很多更改,现在我想将主分支合并到'bob'分支中以保持更新。唯一的问题是,如果存在冲突,我希望它自动解决为'bob'。

我被推荐使用以下内容:

git checkout bob
git merge master -s ours

这无法工作,因为我甚至没有获得不冲突的来自主分支的更改。
请帮忙!

1
合并策略“ours”的含义是从我们的分支获取版本,而不是将冲突解决为了我们的分支。 - Jakub Narębski
2个回答

1

首先,您需要将主分支的所有更改合并到Bob分支:

  • 如果没有冲突,则必须将主分支的所有修改添加到Bob分支
  • 任何冲突都必须通过保留Bob分支的内容来解决。

问题“如何告诉git始终选择特定文件的本地版本进行冲突合并?”解释了如何使用合并驱动程序完成此操作。

合并完成后,只需简单地执行:

 git checkout master
 git rebase bob

允许主分支的HEAD快进到Bob的分支。主分支将从那里继续使用Bob的内容。


我知道:在我之前回答你的第一个问题时,我确实提到了合并驱动程序,但它确实符合你当前的需求。 - VonC
使用合并驱动程序似乎需要很多工作...我认为应该有一些简单的命令可以完成这样的事情。在哪里可以找到关于合并驱动程序的好教程? - tybro0103

0

我看到了我们的合并策略中存在的差距。如果集成自己的合并驱动程序太麻烦,而且如果你喜欢Emacs,请考虑使用ediff作为你的“合并工具”。你可以告诉它在冲突中“优先”使用你的贡献。除此之外,它只关注冲突变更,使你能够在提交之前审查合并结果,以确保仅采用你的贡献仍然会产生一个连贯的文件。

不幸的是,ediff尚未被集成为受支持的合并工具。这个来自2007年6月git邮件列表的主题描述了一些集成问题。这里还有其他的问题。

Git确实内置了对emerge的支持,这是另一种Emacs合并模式,但我更喜欢ediff


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