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

如何在Git中执行从一个提交ID到另一个提交ID的提交合并(Squash)操作?

如何Squash从分支初始提交到指定提交的所有变更

没问题,我来帮你一步步完成这个Git提交合并操作——把从你的分支第一个提交(08f68388387e81aaff8e8cdfa619b6c23adef39d)到第23个提交(d3ccda596adf33f38a6ad3f9bdf63a43713b6343)的所有提交合并成一个,同时保留后面7个提交的原样。

首先,先确认你当前在目标分支上,并且没有未提交的本地变更(用git status就能检查)。如果有没提交的内容,先跑git stash暂存起来,或者临时提交一下(之后可以再调整)。

步骤1:启动交互式Rebase

因为你要合并的是分支的第一个提交(没有父提交)到目标提交,所以需要用--root参数来包含初始提交:

git rebase -i --root d3ccda596adf33f38a6ad3f9bdf63a43713b6343

这条命令会弹出一个文本编辑器,里面列出了从第一个提交到d3ccda5的所有23个提交。

步骤2:设置提交合并规则

编辑器里每一行开头都是pick,后面跟着提交ID和提交信息:

  • 只保留第一个提交(08f6838...)的pick,别动它。
  • 把剩下22个提交的pick全改成squash(或者简写s)——这样Git就会把这些提交的代码变更都合并到第一个提交里。

举个例子,修改前的编辑器内容大概是:

pick 08f6838 你的第一个提交描述
pick xyz789 第二个提交的信息
...
pick d3ccda5 第23个提交的描述

修改后变成:

pick 08f6838 你的第一个提交描述
s xyz789 第二个提交的信息
...
s d3ccda5 第23个提交的描述

改完之后保存并关闭编辑器就行。

步骤3:编辑合并后的提交信息

接下来Git会再次打开编辑器,让你写合并后的提交信息。默认会把所有被合并的提交信息都列出来,你可以整理成一个清晰、简洁的描述,然后保存退出。

步骤4:恢复后续的7个提交

因为你的分支总共有30个提交,d3ccda5之后还有7个,现在要把这些提交重新应用到合并后的提交上:

git rebase --onto HEAD d3ccda596adf33f38a6ad3f9bdf63a43713b6343

(如果当前已经在目标分支上,这条命令里可以不用写分支名)

一些重要提醒

  • 如果rebase过程中碰到冲突,Git会停下来提示你解决。解决完冲突后,跑git add .把修改标记为已解决,再用git rebase --continue继续。要是不想继续了,直接跑git rebase --abort就能回到操作前的状态。
  • 如果你已经把这些提交推送到远程仓库,更新远程分支需要用git push --force——注意:强制推送会覆盖远程分支的历史,一定要提前和团队成员沟通好,避免其他人的工作出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:22:39