章鱼式合并是什么
章鱼式合并一次把多个分支同时并入当前分支,为每个被并入的分支各生成一个父提交。它只适用于没有冲突的场合:只要任一分支存在冲突,整个操作就会中止,也不会留下部分结果。发布前把若干互不重叠的分支一次性并起来,是它最典型的用法。
基本信息
| 用途 | 一次合并多个分支 |
|---|---|
| 语法 | git merge <分支1> <分支2> <分支3> |
| 限制 | 出现冲突即整体中止,无法逐个解决 |
| 结果拓扑 | 生成的合并提交有多个父提交 |
| 适用条件 | 各分支改动互不重叠 |
典型使用场景
- 发布前把多个互不重叠的功能分支一次性并入主干
- 把若干独立修复分支批量合并到维护分支
- 并行开发但改动区域完全不冲突时减少操作次数
- 集中并入文档或多语言资源类改动
- 快速合并若干个长期独立的小分支
常用示例
常用示例
git switch main # 切到接收合并的分支
git merge feature/a feature/b feature/c # 一次并入多个无冲突分支
git log --oneline --graph -10 # 查看合并后的拓扑结构
git show --stat HEAD # 查看合并提交涉及哪些文件合并方式对比
| 方式 | 合并提交 | 适用情况 |
|---|---|---|
| 逐个合并 | 每个分支产生一个合并提交 | 需要分别解决冲突 |
| 章鱼式合并 | 一个提交含多个父提交 | 全部分支都没有冲突时 |
| 快进合并 | 不产生合并提交 | 目标分支可以直接前移 |
有冲突时不要硬用章鱼式合并:改成逐个合并,每个分支单独解决冲突并留下可以回溯的合并提交。
章鱼式合并产生的提交有多个父提交,部分图形化工具展示不够直观,团队需要能接受这种拓扑结构。
使用前的准备
- 确认各分支之间没有改动重叠的文件
- 先本地试跑一次,确认不会产生冲突
- 合并后立刻查看拓扑结构,确认父提交数量符合预期
- 在评审记录里说明这是一次批量合并,便于他人理解历史