解决功能分支上的合并冲突不适用于所有主分支

时间:2016-05-24 18:21:58

标签: git github merge git-merge git-pull

我有三个master分支

  • master
  • master-alpha
  • master-beta

所有这些分支都有100次提交,并且是This branch is even with master

我有三个'特色'分支。

  • feature-brooklynmaster ... feature-brooklyn
  • feature-staten-islandmaster ... feature-brooklyn ... feature-staten-island
  • feature-manhattanmaster ... feature-manhattan

每个分支都来自master,而feature-staten-islandmaster进行了根本性更改,因此它已与feature-brooklyn合并。

这是设置。

  1. 我制作公关,将feature-brooklyn添加到master-beta。没有问题。
  2. 我制作了一个PR,将feature-staten-island添加到master-beta,这是一个合并冲突。因此,我将master-beta合并到feature-staten-island,然后将更新推送到feature-staten-island
  3. 这有效,我可以合并。

    我发现的问题是:

    1. 我现在制作PR以将feature-brooklyn添加到master-alpha。作品。
    2. 我制作了一个PR,将feature-staten-island添加到master-alpha,但仍然存在合并冲突。
    3. 为什么当我使用另一个分支解析功能分支的合并冲突然后更新功能分支时,当我在另一个分支上使用完全相同的代码进行合并时,仍然存在冲突吗?

      我的目标是拥有三个干净的功能分支,可以轻松地合并到三个主分支中。我不明白为什么一旦我为其中一个主分支修复合并冲突,为什么当我尝试将其合并到另一个主分支时仍然存在冲突。

2 个答案:

答案 0 :(得分:1)

解决master-betafeature-staten-island之间的冲突后,您可能会选择将代码保留在feature-staten-island上。

这意味着master-betamaster-alpha不再相同。您必须解决相同的合并冲突,因为master-alphafeature-staten-island之间仍存在冲突的代码。

每次合并中存在冲突的代码时,Git都会标记冲突。您可以尝试使用git merge branch -X ours告诉Git更喜欢当前分支上的版本,或git merge branch -X theirs更喜欢其他分支的版本。 (我不认为这是最好的工作流程,但它有可能。)

答案 1 :(得分:1)

我认为这是因为导致与您的功能分支冲突的源代码行仍然存在于每个主分支。例如,假设每个主分支都有一个提交,超过特征分支分支的点,它执行以下操作:

a = 1;

现在,在feature-staten-island上,有一个提交,它在同一行上执行以下操作:

a = b + 3;

要解决冲突,我们假设你真的想要这个:

a = b + 1;

然后,在将master-beta 合并到 feature-staten-island时,您的冲突解决方案是a = b + 1;feature-staten-island。但是,由于这仍然与a = 1;上的master-beta不同,因此当您合并master-beta时,仍需要解决 feature-staten-island上的冲突行背部。现在master-beta也有正确的行a = b + 1;

现在,由于master-alphamastermaster-beta处于同一原始提交参考,因此它们仍然会有冲突的行a = 1;,即它们仍然是与<{1}}上的不同,<{1}}具有正确的行feature-staten-island。它们不同的方式已更改,因为a = b + 1;上的更正行现在是feature-staten-island而不是原始a = b + 1;,但这些行仍然存在冲突。因此,您必须在a = b + 3;与其余feature-staten-island个分支之间进行相同的冲突解决。

有意义吗?