我有三个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. 我进行公关以将feature-staten-island添加到master-beta这存在合并冲突。 因此,我将master-beta合并到feature-staten-island ,然后将更新推送到feature-staten-island

这可行,我可以合并。

我发现的问题是这样的:

  1. 我现在进行PR,以将feature-brooklyn添加到master-alpha 作品。
  2. 我进行了PR,以将feature-staten-island添加到master-alpha ,并且仍然存在合并冲突。

为什么当我解决与另一个分支的功能分支的合并冲突,然后更新功能分支时,当我使用完全相同的代码合并到另一个分支时,仍然存在冲突吗?

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

===============>>#1 票数: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的版本更喜欢另一个分支的版本。 (我认为这不是最好的工作流程,但有可能。)

===============>>#2 票数: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 ,将feature-staten-island合并回去时,仍然必须解决master-beta 的冲突行。 现在, master-beta也具有正确的行a = b + 1;

现在,由于master-alphamastermaster-beta处于相同的原始提交引用,因此它们仍将具有冲突的行a = 1; ,即它们仍然会比上什么不同 feature-staten-island ,其中有正确的路线a = b + 1; 在其中它们是不同的方式发生变化时,由于校正后的线feature-staten-island是现在a = b + 1; 而不是原始的a = b + 3; ,但线条仍然相互冲突。 因此,您必须在feature-staten-island与其余每个master-XXX分支之间进行相同的冲突解决。

说得通?

  ask by ThomasReggi translate from so

未解决问题?本站智能推荐: