我正在研究从主branch - 1
切下的功能分支,并假设要合并到主branch - 2
中。 (我们在项目中使用的git流有点尴尬)
现在,将PR提高到branch - 2
时,我看到两个文件中的合并冲突。由于其他团队成员正在进行其他工作,我不想在代码中使用branch - 2
。因此,我需要一种方法来解决合并冲突,而无需在功能分支中合并回branch - 2
。
如果有人知道如何在intelliJidea或其他命令中完成命令,那将是很好的。
答案 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冗余。