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/1
与 deploy
合并后,您从 deploy
而不是 feature/1
创建 feature/2
,问题就不会出现.
但是因为有点晚了,我推荐以下简单的方法:
- 从
deploy
创建另一个分支,我们称之为 feature/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/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
我现在有一个分支系统:
- 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/1
与 deploy
合并后,您从 deploy
而不是 feature/1
创建 feature/2
,问题就不会出现.
但是因为有点晚了,我推荐以下简单的方法:
- 从
deploy
创建另一个分支,我们称之为feature/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/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