GitLab 合并来自两个分支的更改



我有一个当前的分支系统:

- deploy
- feature/1

我通过选择"壁球提交"将分支feature/1合并到deploy,但尚未删除分支本身。然后我从feature/1创建了一个新的分支feature/2(这意味着feature/2包含来自feature/1的所有提交)。但是现在,当我想将feature/2合并到deploy并创建合并请求时,它显示来自feature/2的所有更改都是冲突,并显示所有提交(与从feature/1合并的提交),但我希望它像在第一个合并请求中一样,因此它只会显示第一次合并时未feature/1feature/2的更改deploy.

我仍然有合并请求和分支feature/1.我如何实现这样的目标?第一个合并请求中有两个选项可用:"还原"和"樱桃选择",我阅读了有关这些按钮的 GitLab 文档,但我仍然不确定它们的作用以及在这种情况下该选择的内容。 如果我需要绘制它,它看起来像这样:

---deploy------ok-------------?
----feature/1--|              |
---feature/2--|

> 分支deploy已经包含feature/1的更改。由于feature/2也包含相同的更改,因此会出现合并冲突。

通常,如果在将feature/1deploy合并后,您从deploy而不是feature/1创建feature/2则问题将不存在。

但由于有点晚了,我推荐以下简单的方法:

  1. deploy创建另一个分支,我们称之为feature/2.2
  2. 挑选feature/2的所有新提交(不属于feature/1)到新分支。

然后,您可以轻松地将新分支与部署合并。


详细信息:
这是您当前情况下的样子:

deploy    => d1-d2-d3-f'------------f1-f2-f3-ff1-ff2-ff3
/             /?
feature/1 => f1-f2-f3             /?
|            /?  
feature/2 => f1-f2-f3-ff1-ff2-ff3

分支deploy已经包含提交f',这是f1-f2-f3.
的压缩提交,因此,如果您尝试将feature/2deploy合并,git 将尝试将f1-f2-f3-ff1-ff2-ff3放在已经具有更改f1-f2-f3f'之上。这就是您遇到合并冲突的地方。

因此,为了解决这个问题,我们只需从deploy创建一个新分支,因此f1-f2-f3不再存在,只需挑选其他不会发生合并冲突的ff1-ff2-ff3。然后我们可以将它们合并回像这样部署(通过将ff1-ff2-ff3压缩到ff'

):
deploy      => d1-d2-d3-f'------------ff'
|             /
feature/2.2 => d1-d2-d3-f'-ff1-ff2-ff3
/   /    /
feature/2   => f1-f2-f3-ff1-ff2-ff3
|               
feature/1   => f1-f2-f3