首页/开发/Git 与协作速查/GitLab 合并列车(merge trains)
协作与代码评审75 条

GitLab 合并列车(merge trains)

在目标分支要求快进合并且启用合并列车后,多个 MR 按顺序与前一结果组合验证,减少「前一个合并导致后一个失败」的互相等待。

Git 与协作速查开发更新于 2026-10-13

GitLab 合并列车是什么

GitLab 合并列车(merge trains)在目标分支要求快进合并且启用后,把多个 MR 按顺序排队:每个 MR 都与「前一个结果的合并结果」一起重新验证,成功即入队依次合入,减少「前一个合并导致后一个失败」的互相等待。它是 CI 原生的「排队合并」方案:队列中的 MR 只有以队列前序结果为底重跑通过后,才真正落到目标分支;依赖合并结果流水线(merged results pipelines)机制。

基本信息

前置合并方法设为 Fast-forward merge,并启用 Merge trains
依赖必须先启用合并结果流水线
行为每个 MR 按队列顺序验证后依次合入
代价队列内重跑使流水线总时长叠加,慢流水线受益更明显
适用主干频繁合入、流水线较慢的团队

典型使用场景

  • 高频合入的主干:多个 MR 同时就绪时按序自动合入。
  • 慢流水线团队:把等待前置合并的时间变成队列内验证。
  • 发布冲刺:截止时间前集中入车,减少互相拖累。
  • 减少写冲突:按序组合验证,失败者退出不影响他人。
  • 规范化合入:所有人走同一队列,杜绝个别人绕过验证直推。

配置要点

配置要点
Settings → Merge requests:
- Merge method:Fast-forward merge
- Enable merged results pipelines
- Enable merge trains
# 队列中的 MR 会显示所属列车与位置

概念对照

概念作用关系
快进合并保证线性历史列车的前置条件
合并结果流水线用组合结果跑验证列车的依赖
合并列车队列化依次验证合入本体机制
队列失败失败者移出并重排队列其余 MR 继续推进
适合主干频繁合入且流水线较慢的团队;流水线很快时收益有限,反而增加配置复杂度;上线前先在小项目试点观察队列长度。

易错点

  • 快进合并要求源分支先基于目标分支更新,不习惯变基的团队先统一流程。
  • 列车中任一 MR 失败会触发重排;关注队列通知,避免整体等待变长后才发现。
  • 流水线很快时列车收益有限;先量化「等待前一个合并」的耗时再上线,收益不够就保持简单方案,别为工具而工具。
  • 启用后所有人合入都走队列,个别直接推送的例外流程要同步关掉,避免绕过验证。

数据来源与参考

  • GitLab Docs:Merge trains
  • GitLab Docs:Merged results pipelines
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌