变基保留合并结构
默认的变基会把合并提交压平,只留下一条直线;启用保留合并结构的选项后,重放时会重建分支与合并的拓扑。它适合整理包含多次合并的复杂分支,让整理后的历史仍然看得出原来的结构。
基本信息
| 用途 | 变基时保留分支与合并的结构 |
|---|---|
| 用法 | 在交互式变基时启用保留合并结构的选项 |
| 清单变化 | 待办清单里会出现分支标记、回到某点、合并等指令 |
| 适用对象 | 包含合并提交的特性分支整理 |
| 冲突特点 | 每个被重建的合并点上都有可能出现冲突 |
典型使用场景
- 特性分支在开发期间多次合并过主干
- 需要保留并行的两条实现线索
- 整理历史但不想丢掉分支结构
- 评审时希望看清改动的演进拓扑
- 重放复杂的合并关系供后续追溯
常用示例
常用示例
git rebase --rebase-merges --autosquash -i origin/main # 保留结构并折叠修正提交
git log --oneline --graph -15 # 查看重建后的拓扑
# 待办清单里会出现描述结构的指令行,按提示逐个处理冲突
git rebase --continue # 解决冲突后继续
git rebase --abort # 结构过于复杂时退回清单指令含义
| 指令含义 | 作用 |
|---|---|
| 创建分支标记 | 在重放中定义一条分支线索 |
| 回到某点 | 把后续重放接到指定位置 |
| 合并 | 重建一次合并操作 |
| 挑选提交 | 逐条重放普通提交 |
重建的合并提交哈希与原来不同,评审工具里的历史引用会失效,需要重新推送。
结构复杂时待办清单难以阅读,出错概率更高,建议先在备份分支上演练一遍。
每个被重建的合并点都可能产生冲突,把它当成多次小型合并逐个处理比较现实。
如果只是想整理零散提交,普通交互式变基已经够用,不必启用保留结构的选项。