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

Git如何在同一分支中压缩指定范围的连续提交?

指定区间提交Squash操作步骤

注意:本次操作会改写分支提交历史,操作前请确认BranchA没有其他协作者未同步的本地提交,避免强推后影响其他人的开发流程。

  • 第一步:切换到目标分支并同步最新状态
    执行以下命令保证本地分支和远程分支代码完全一致:
    git checkout BranchA
    git pull origin BranchA
    
  • 第二步:启动交互式变基,定位到待修改区间的前置提交
    我们要保留不动的最旧提交是commit1,因此把commit1的哈希作为交互式rebase的起点,执行命令:
    git rebase -i <commit1的完整哈希值>
    
  • 第三步:在交互编辑页标记需要压缩的提交
    命令执行后会弹出编辑窗口,按提交时间从早到晚列出commit1之后的所有提交(也就是commit2、commit3、commit4、commit5),每行开头默认标记为pick:
    • 保留commit2行开头的pick标记
    • 将commit3、commit4行开头的pick改为s(是squash的缩写,代表将当前提交合并到上一个相邻提交)
    • 保留commit5行开头的pick标记不做修改
      修改后的内容参考如下:
    pick 7f3d2a1 commit2的提交信息
    s 9c0b4e6 commit3的提交信息
    s 2a8f1d9 commit4的提交信息
    pick d4e7g03 commit5的提交信息
    
    确认修改后保存退出编辑器。
  • 第四步:编辑压缩后的新提交信息
    上一步保存后会自动弹出新的编辑窗口,展示被压缩的3个提交的原有提交信息,删除冗余内容,填写你需要的commitSQUASH对应的提交说明,保存退出后变基会自动执行完成,此时本地分支的提交顺序已经变为commit1 → commitSQUASH → commit5。

    如果变基过程中出现代码冲突,先手动解决冲突文件,执行git add <解决完的冲突文件路径>标记冲突已解决,再执行git rebase --continue即可推进流程;如果要放弃本次变基回到操作前状态,执行git rebase --abort即可。

  • 第五步:将改写后的提交历史推送到远程
    因为变基改写了原有提交链,普通推送会被远程拒绝,需要执行带保护的强推命令:
    git push origin BranchA --force-with-lease
    
    该参数比裸--force更安全,会在检测到远程存在你本地未同步的新提交时自动终止推送,避免误覆盖其他协作者提交的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:21:25