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

GitLab merging changes from two branches

我现在有一个分支系统:​​

- deploy
- feature/1

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

我还有合并请求和分支 feature/1。我如何实现这样的目标?在第一个合并请求中有两个选项可用:“revert”和“cherry-pick”,我阅读了关于这些按钮的 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. Cherry 选择 feature/2(不属于 feature/1)的所有新提交到新分支。

然后您就可以轻松地将新分支与 deploy 合并。


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

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