自动合并
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
History
- 流水线成功时合并 和 流水线成功时添加到合并列车 在极狐GitLab 16.0 中重命名为 自动合并,使用名为 auto_merge_labels_mr_widget 的功能标志。默认启用。
- 重命名的自动合并功能在极狐GitLab 16.0 中 GA。功能标志 auto_merge_labels_mr_widget 被移除。
- 增强的自动合并功能引入于极狐GitLab 16.5,使用 merge_when_checks_pass 和 additional_merge_when_checks_ready 两个功能标志。默认禁用。
- 在极狐GitLab 17.0 中,在 JihuLab.com 上启用了功能标志 merge_when_checks_pass 和 additional_merge_when_checks_ready。
- 在极狐GitLab 17.1 中,对 additional_merge_when_checks_ready 与标志 merge_when_checks_pass 进行了合并。
- 合并请求的自动合并引入于极狐GitLab 17.2,使用名为 merge_when_checks_pass_merge_train 的功能标志。默认禁用。
- 合并请求的自动合并在极狐GitLab 17.2 中,在 JihuLab.com 上启用。
- 在极狐GitLab 17.4 中,在私有化部署上启用功能标志 merge_when_checks_pass。默认启用。
- 合并请求的自动合并在极狐GitLab 17.7 中 GA。功能标志 merge_when_checks_pass_merge_train 被移除。
- 自动合并在极狐GitLab 17.7 中 GA。功能标志 merge_when_checks_pass 被移除。
如果一个合并请求的内容已准备好合并,您可以选择 设置为自动合并。当所有必需的检查成功完成后,合并请求会自动合并,您无需记得手动合并该合并请求。
合并检查使您可以专注于审查合并请求的内容,并使用项目设置来确定其可合并性。当您审查一个合并请求时,如果您同意合并请求的更改,请将其设置为自动合并。极狐GitLab 强制执行您的项目设置,直到合并请求满足所有合并检查(如必需的代码拥有者和审批规则),否则无法合并。在满足所有必需的合并检查后,合并请求将合并,无需您进行任何操作。
合并检查包括通过的 CI/CD 流水线,以及更多内容:
- 必须给予所有必需的批准。
- 没有其他合并请求阻止此合并请求。
- 不存在合并冲突。
- 无论项目设置如何,CI/CD 流水线都必须成功完成。
- 所有讨论都已解决。
- 合并请求不是 草稿。
- 所有外部状态检查都已通过。
- 合并请求必须处于打开状态。
- 不存在被拒绝的策略。
- 如果您的项目需要合并请求引用一个 Jira 议题,合并请求标题或描述中包含一个 Jira 议题链接。
- 如果合并请求设置了 Merge after 日期,当前时间必须晚于配置的日期。
有关检查和其 API 等效项的完整列表,请参阅合并状态。

在您设置自动合并后,您无法更改哪些议题会在合并请求合并时自动关闭。
自动合并请求
先决条件:
- 您必须至少拥有项目的开发者角色。
- 如果项目配置要求,合并请求中的所有线程必须被解决。
- 合并请求必须获得所有必需的批准。
要在命令行中进行此操作,请使用 merge_request.merge_when_pipeline_succeeds 推送选项。
要在极狐GitLab 用户界面中执行此操作:
- 在左侧侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 代码 > 合并请求。
- 选择要编辑的合并请求。
- 滚动到合并请求报告部分。
- 可选。选择您想要的合并选项,例如 删除源分支、压缩提交或 编辑提交消息。
- 审查合并请求小部件的内容。如果它包含一个议题关闭模式,确认议题在此工作合并时应关闭:

- 选择 自动合并。
在您选择 自动合并 后评论合并请求,但在流水线完成之前,会阻止合并,直到您解决所有现有线程。
取消自动合并
您可以取消合并请求的自动合并。
先决条件:
- 您必须是合并请求的作者,或项目成员,至少拥有开发者角色。
- 合并请求的流水线必须仍在进行中。
执行此操作:
- 在左侧侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 代码 > 合并请求。
- 选择要编辑的合并请求。
- 滚动到合并请求报告部分。
- 选择 取消自动合并。

流水线成功自动合并
如果流水线成功,合并请求会合并。如果流水线失败,作者可以重试任何失败的作业,或推送新提交以修复失败:
- 如果重试的作业在第二次尝试中成功,合并请求将合并。
- 如果您向合并请求添加新提交,极狐GitLab 会取消请求,以确保新更改在合并前得到审查。
- 如果您向合并请求的目标分支添加新提交,并且您的项目仅允许快速合并请求,极狐GitLab 会取消请求以防止合并冲突。
为了更严格地控制流水线状态,您还可以在合并前要求成功的流水线。
要求成功的流水线用于合并
您可以配置您的项目以要求在合并前完成并成功的流水线。此配置适用于:
- 极狐GitLab CI/CD 流水线。
- 从外部 CI 集成运行的流水线。
因此,禁用极狐GitLab CI/CD 流水线不会禁用此功能,但您可以使用外部 CI 提供商的流水线。
先决条件:
- 确保您的项目 CI/CD 配置为每个合并请求运行流水线。
- 您必须至少拥有项目的维护者角色。
要启用此设置:
- 在左侧侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 合并请求。
- 滚动到 合并检查,并选择 流水线必须成功。此设置还会阻止合并请求在没有流水线时合并,这可能与某些规则冲突。
- 选择 保存。
如果多个流水线类型为同一个合并请求运行,合并请求流水线优先于其他流水线类型。例如,旧但成功的合并请求流水线允许合并请求合并,尽管较新的分支流水线失败。
允许在跳过的流水线后合并
当您为项目设置 流水线必须成功 时,跳过的流水线会阻止合并请求合并。
先决条件:
- 您必须至少拥有项目的维护者角色。
要更改此行为:
- 在左侧侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并检查 下:
- 选择 流水线必须成功。
- 选择 跳过的流水线被视为成功。
- 选择 Save。
防止在特定日期前合并
History
- 引入于极狐GitLab 17.6。
如果您的合并请求不应在特定日期和时间之前合并,请设置一个 Merge after 日期。此值设置合并(或合并列车)可以开始的时间。然而,确切的合并时间可能会有所不同,具体取决于其他合并检查的满足情况或合并列车的长度。
先决条件:
- 您必须至少拥有项目的开发者角色。
执行此操作:
- 在左侧侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 代码 > 合并请求。
- 选择要编辑的合并请求。
- 选择 编辑。
- 找到 合并时间 输入框并选择一个日期和时间。
- 选择 保存更改。
故障排除
合并请求无法合并,尽管没有失败的流水线
在某些情况下,您可以要求成功的流水线用于合并,但无法合并没有失败流水线的合并请求。该设置要求存在一个成功的流水线,而不是没有失败的流水线。完全没有流水线的合并请求不被视为有成功的流水线,因此无法合并。
当您启用此设置时,使用rules或workflow:rules确保每个合并请求运行流水线。
合并请求仍然可以合并,尽管有失败的流水线
在某些情况下,您可以要求成功的流水线用于合并,但仍然可以合并一个失败的流水线的合并请求。
合并请求流水线在 流水线必须成功 设置中具有最高优先级。如果为同一个合并请求运行多种流水线类型,极狐GitLab 只检查合并请求流水线是否成功。
合并请求可以有多个流水线,如果:
- rules 配置导致重复的流水线:一个合并请求流水线和一个分支流水线。在这种情况下,最新的 合并请求 流水线的状态决定合并请求是否可以合并,而不是分支流水线。
- 由外部工具触发的流水线目标与合并请求相同分支。
在所有情况下,更新您的 CI/CD 配置以防止同一合并请求的多种流水线类型。