首页/开发/Git 与协作速查/git rebase --rebase-merges 保留合并结构
合并变基与冲突71 条

git rebase --rebase-merges 保留合并结构

默认变基会拍平合并提交;--rebase-merges 在重放时重建分支与合并结构,适合整理包含合并的复杂分支。

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

变基保留合并结构

默认的变基会把合并提交压平,只留下一条直线;启用保留合并结构的选项后,重放时会重建分支与合并的拓扑。它适合整理包含多次合并的复杂分支,让整理后的历史仍然看得出原来的结构。

基本信息

用途变基时保留分支与合并的结构
用法在交互式变基时启用保留合并结构的选项
清单变化待办清单里会出现分支标记、回到某点、合并等指令
适用对象包含合并提交的特性分支整理
冲突特点每个被重建的合并点上都有可能出现冲突

典型使用场景

  • 特性分支在开发期间多次合并过主干
  • 需要保留并行的两条实现线索
  • 整理历史但不想丢掉分支结构
  • 评审时希望看清改动的演进拓扑
  • 重放复杂的合并关系供后续追溯

常用示例

常用示例
git rebase --rebase-merges --autosquash -i origin/main   # 保留结构并折叠修正提交
git log --oneline --graph -15                            # 查看重建后的拓扑
# 待办清单里会出现描述结构的指令行,按提示逐个处理冲突
git rebase --continue                                    # 解决冲突后继续
git rebase --abort                                       # 结构过于复杂时退回

清单指令含义

指令含义作用
创建分支标记在重放中定义一条分支线索
回到某点把后续重放接到指定位置
合并重建一次合并操作
挑选提交逐条重放普通提交
重建的合并提交哈希与原来不同,评审工具里的历史引用会失效,需要重新推送。
结构复杂时待办清单难以阅读,出错概率更高,建议先在备份分支上演练一遍。
每个被重建的合并点都可能产生冲突,把它当成多次小型合并逐个处理比较现实。
如果只是想整理零散提交,普通交互式变基已经够用,不必启用保留结构的选项。

易错点

  • 重建后的合并提交哈希变化,评审记录与引用全部失效,需要重新推送
  • 待办清单结构复杂导致误操作,出错后回退成本高于先在副本上演练
  • 误以为它保留的是原始哈希:保留的是结构,哈希必然改变
  • 在公开分支上重写结构,协作方的历史与主干分叉,合并时冲突成倍增加

数据来源与参考

  • Git 官方文档:git-rebase(--rebase-merges)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌