首页/开发/Git 与协作速查/平台合并方式:合并提交 / 压缩 / 变基
协作与代码评审75 条

平台合并方式:合并提交 / 压缩 / 变基

GitHub 与 GitLab 都提供多种合并按钮:保留合并提交、squash 合并、rebase 合并;仓库可启用哪些方式属于管理员设置,团队需统一约定。

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

平台的合并方式是什么

GitHub 与 GitLab 在合并 PR/MR 时都提供多种按钮:保留合并提交、压缩为单条提交(squash)、以及变基后快进(rebase)。它们会以不同方式把分支内容写进主干,直接影响事后能否按功能回滚、历史是否线性。仓库允许使用哪些方式属于管理员设置,团队需要事先统一约定,否则同一仓库会同时出现三种历史风格,追溯与回滚都会变难。

基本信息

常见方式Merge commit / Squash and merge / Rebase and merge
决定权仓库管理员的合并方式设置
影响面主干历史形态与回滚粒度
查看位置GitHub 仓库设置或 GitLab 项目的合并方法配置
平台GitHub 与 GitLab

典型使用场景

  • 需要保留每个功能一个回滚点时选合并提交
  • 小改动想保持主干线性时用压缩合并
  • 分支内提交已逐条整理干净时用变基合并
  • 按发布节奏选择策略:频繁发版更倾向线性历史
  • 排查主干历史风格混乱,统一仓库的可用方式
  • 给新人说明何时选哪种按钮,减少随意点击

三种方式对照

方式历史形态适用
Merge commit保留分支与合并点需要完整拓扑与回滚点
Squash and merge压成单条提交小改动、要求整洁线性史
Rebase and merge线性、无合并点逐提交整理过的分支

选择建议

选择建议
需要独立回滚点:Merge commit
要求主干线性:Rebase and merge(分支已整理)
小改动或零散提交:Squash and merge
# 选定后建议在仓库设置里只保留一种或两种,避免混用
压缩合并会把 PR 标题作为主干提交信息,因此标题质量直接影响主干历史;这也解释了为什么提交与 PR 规范在这里格外重要。
变基合并要求分支内提交已经整理过,否则会把这些临时提交原样写进主干,事后清理成本更高。

易错点

  • 不同仓库设置不同,贡献前先看该仓库的合并方式约定,避免产生意外历史
  • 压缩合并会丢失分支内的提交粒度,回溯单条改动只能依赖 PR 记录
  • 变基合并用于未整理的脏分支会把 wip 提交带进主干,推之前先自查提交清单
  • 混用三种方式会让主干既有合并点又有压缩提交,回滚粒度不一致
  • 用完压缩合并后仍按原分支提交去查历史会一无所获,检索主干时改用 PR 编号或标题关键词

数据来源与参考

  • GitHub Docs:About merge methods on GitHub
  • GitLab Docs:Merge methods
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌