解决冲突而不合并目标分支

时间:2020-09-20 17:27:09

标签: git

我正在研究从主branch - 1切下的功能分支,并假设要合并到主branch - 2中。 (我们在项目中使用的git流有点尴尬)

现在,将PR提高到branch - 2时,我看到两个文件中的合并冲突。由于其他团队成员正在进行其他工作,我不想在代码中使用branch - 2。因此,我需要一种方法来解决合并冲突,而无需在功能分支中合并回branch - 2

如果有人知道如何在intelliJidea或其他命令中完成命令,那将是很好的。

1 个答案:

答案 0 :(得分:0)

现在,将PR提升至分支机构时-2 ...

如果要将PR提升至Branch-2,则大概要与Branch-2合并。但是您不想与Branch-2合并。

因此,我需要一种无需合并后分支即可解决合并冲突的方法-在我的功能分支中为2。

您可以,但是这样的部分合并可能会破坏代码。

例如,假设您俩都重构了一个功能,使其工作方式有所不同。这导致冲突。您如何有意义地解决此冲突,而又不合并分支2的其余更改?

如果通过接受branch-2的更改来解决它,则还需要接受分支2对调用函数的位置的更改。如果您通过接受自己的更改来解决此问题,则必须解决与branch-2更改后的函数调用位置之间的冲突。


我猜想branch-2是一个大型功能分支,其中混入了许多独立的修补程序,而您只需要这些修补程序。在这种情况下,在branch-1上创建一个新分支,樱桃只选择修复程序,然后将其合并。现在,每个人都可以访问这些修补程序,而无需拖动其余的Branch-2。

将功能分支重新建立(或合并)到branch-1以获得修补程序。

也将分支2重新建立(或合并)到分支1。这简化了branch-2。

将其绘制出来。您的仓库看起来像这样。

A - B - C [branch-1]
        |\
        | D - E - F [branch-2]
        \
         G - H - I [feature]

您只想提交E。在branch-1上创建一个新分支。

$ git checkout -b fix branch-1

          [fix]
A - B - C [branch-1]
        |\
        | D - E - F [branch-2]
        \
         G - H - I [feature]

樱桃选择E。

$ git cherry-pick E
          E1 [fix]
         /
A - B - C [branch-1]
        |\
        | D - E - F [branch-2]
        \
         G - H - I [feature]

像其他任何PR一样,将其合并到branch-1中。

          E1
         /  \
A - B - C --- M [branch-1]
        |\
        | D - E - F [branch-2]
        \
         G - H - I [feature]

将两个分支重新设置在新的branch-1上。

$ git checkout branch-2
$ git rebase branch-1
$ git checkout feature
$ git rebase branch-1

          E1
         /  \
A - B - C --- M [branch-1]
              |\
              | D - F [branch-2]
              \
               G - H - I [feature]

请注意E在分支2上如何消失,因为它与E1冗余。