如何忽略合并提交并压缩其余普通提交?附分支场景示例
Git分支历史压缩实现方案
这个操作完全可行,用Git的交互式变基就能达成目标,具体步骤如下:
步骤1:合并A、B提交为(AB)
- 切换到包含G的目标分支(假设分支名为
main):git checkout main - 启动交互式变基到仓库初始提交(若A不是仓库第一个提交,替换成A的哈希值即可):
git rebase -i --root - 在弹出的编辑界面中,找到提交B对应的行,将开头的
pick修改为squash(或缩写s),保存并退出编辑。 - 随后会弹出提交信息编辑框,将内容修改为
(AB),保存后完成A、B的合并。
步骤2:合并D、E提交为(DE)
- 保持在目标分支上,启动交互式变基到提交C的位置(替换成C的哈希值):
git rebase -i <C的哈希值> - 在编辑界面找到提交E对应的行,将
pick修改为squash,保存并退出。 - 在提交信息编辑框中输入
(DE),保存后完成D、E的合并。
注意事项
- 如果目标分支已推送到远程仓库,不要随意执行上述操作——变基会重写历史,会导致协作成员的代码出现冲突,除非确认无他人使用该分支,或已和团队沟通好后续同步方案。
- 分支
c'--c''和f'--f''的父提交不会受影响,它们会保持原有的分叉结构,完全符合你想要的最终分支树形态。
内容的提问来源于stack exchange,提问作者Navid_pdp11
相关产品推荐
相关产品推荐

