我有一个当前的分支系统:
- deploy
- feature/1
我通过选择"壁球提交"将分支feature/1
合并到deploy
,但尚未删除分支本身。然后我从feature/1
创建了一个新的分支feature/2
(这意味着feature/2
包含来自feature/1
的所有提交)。但是现在,当我想将feature/2
合并到deploy
并创建合并请求时,它显示来自feature/2
的所有更改都是冲突,并显示所有提交(与从feature/1
合并的提交),但我希望它像在第一个合并请求中一样,因此它只会显示第一次合并时未feature/1
feature/2
的更改deploy
.
我仍然有合并请求和分支feature/1
.我如何实现这样的目标?第一个合并请求中有两个选项可用:"还原"和"樱桃选择",我阅读了有关这些按钮的 GitLab 文档,但我仍然不确定它们的作用以及在这种情况下该选择的内容。 如果我需要绘制它,它看起来像这样:
---deploy------ok-------------?
----feature/1--| |
---feature/2--|
> 分支deploy
已经包含feature/1
的更改。由于feature/2
也包含相同的更改,因此会出现合并冲突。
通常,如果在将feature/1
与deploy
合并后,您从deploy
而不是feature/1
创建feature/2
则问题将不存在。
但由于有点晚了,我推荐以下简单的方法:
- 从
deploy
创建另一个分支,我们称之为feature/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/2
与deploy
合并,git 将尝试将f1-f2-f3-ff1-ff2-ff3
放在已经具有更改f1-f2-f3
的f'
之上。这就是您遇到合并冲突的地方。
因此,为了解决这个问题,我们只需从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