You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Git的master分支合并多个历史提交且避免分离头?

解决Git合并中间提交并保留master分支的方法

正确操作步骤

  • 先确保当前处于master分支:
    git checkout master
    
  • 执行交互式变基,以提交A为基准(我们要修改A之后的提交):
    git rebase -i A
    
  • 在弹出的编辑器中,会列出A之后的所有提交:B、C、D、E,按如下修改:
    • 保留B前面的pick不变
    • 将C和D前面的pick改为squash(或缩写s)
    • 保留E前面的pick不变
      修改后示例:
    pick <B的提交哈希> 提交B的说明
    squash <C的提交哈希> 提交C的说明
    squash <D的提交哈希> 提交D的说明
    pick <E的提交哈希> 提交E的说明
    
  • 保存并关闭编辑器,Git会自动合并B、C、D为新提交B',并将E衔接在B'之后。完成后你仍处于master分支,提交历史变为A -> B' -> E。

你之前操作出错的原因

你执行的git rebase -i A D命令,是指定把从A之后到D的提交变基到D上,这会让Git进入分离头状态(HEAD指向D而非master分支),且没有把E纳入变基流程,完全不符合你的需求。直接在master分支上执行git rebase -i A,Git会自动在变基完成后更新master分支,不会出现分离头问题。

内容的提问来源于stack exchange,提问作者Mojie11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:33:02