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

如何将Git历史中的两个旧提交合并为一个?

没问题,这事儿用交互式变基就能搞定,我给你一步步拆解:

合并早期提交的操作步骤

我们需要通过交互式变基来重写提交历史,具体流程如下:

  1. 启动交互式变基操作
    打开终端进入你的Git仓库目录,运行以下命令,针对最近3个提交发起变基:

    git rebase -i HEAD~3
    

    执行后会弹出文本编辑器,里面的提交顺序是从旧到新排列的,内容大概是这样:

    pick 3c337c1 old commit message
    pick 46545ac fix for old commit
    pick fwr5678 most recent commit
    
  2. 修改提交合并指令
    把第二行的pick改成squash(或简写s),表示将这个提交合并到它的前一个提交(也就是最早的3c337c1)中。修改后的内容如下:

    pick 3c337c1 old commit message
    squash 46545ac fix for old commit
    pick fwr5678 most recent commit
    

    保存并关闭编辑器即可(Vim环境按Esc后输入:wq回车;nano环境按Ctrl+O回车确认保存,再按Ctrl+X退出)。

  3. 编辑合并后的提交信息
    接下来会弹出第二个编辑器,里面会显示两个原始提交的信息,你可以把它们修改成你想要的内容:

    fix for old commit + old commit message
    

    同样保存关闭编辑器,变基操作就会自动完成。

  4. (可选:提交已推送到远程时的处理)
    如果这些提交已经推送到了远程分支,你需要强制推送修改后的历史:

    git push --force-with-lease <你的远程分支名>
    

    注意:--force-with-lease比直接用--force更安全,它会检查远程分支是否有你本地未同步的新提交,避免误覆盖他人工作。但如果是多人协作的分支,一定要提前和团队成员沟通,修改公开的提交历史会影响其他人的工作进度。

操作完成后,你的提交历史就会变成预期的样子:

fwr5678 most recent commit
3c337c1 fix for old commit + old commit message

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:36:43