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

如何在RELEASE分支中压缩被同事提交隔开的自有提交且不改动该提交?

解决已合并后的提交压缩问题

操作前重要提醒

这种操作属于重写Git公共分支历史,如果RELEASE是团队共享分支,必须先和所有成员确认同意,否则会导致协作混乱和代码冲突。操作前建议先备份当前RELEASE分支:

git checkout RELEASE
git branch RELEASE-backup

方法一:临时分支合并压缩(更直观)

  1. 找到同事提交(colleagues-commit)的哈希值,可通过git log查看,记为C_HASH
  2. 基于该提交创建临时分支:
git checkout -b temp-squash C_HASH
  1. 将你的工作分支改动一次性压缩合并到临时分支:
git merge --squash MYDEVBRANCH

此时你的3次提交的所有改动会被整合到暂存区,未生成新提交。
4. 提交压缩后的改动:

git commit -m "my-squashed-commit"
  1. 将RELEASE分支指向这个压缩后的提交:
git checkout RELEASE
git reset --hard temp-squash
  1. 删除临时分支:
git branch -D temp-squash

方法二:交互式rebase重写历史(适合熟悉rebase的场景)

  1. 切换到RELEASE分支并确保本地最新:
git checkout RELEASE
git pull
  1. 执行交互式rebase,目标是同事提交的父提交(C_HASH^表示colleagues-commit的前一个提交):
git rebase -i C_HASH^
  1. 在弹出的编辑器中,调整提交顺序和操作:
    将默认的提交列表:
pick DEV1_HASH dev-commit-1
pick C_HASH colleagues-commit
pick DEV2_HASH dev-commit-2
pick DEV3_HASH dev-commit-3

修改为:

pick C_HASH colleagues-commit
squash DEV1_HASH dev-commit-1
squash DEV2_HASH dev-commit-2
squash DEV3_HASH dev-commit-3
  • pick表示保留该提交
  • squash表示将该提交合并到前一个提交
  1. 保存并关闭编辑器,Git会自动合并提交内容,若有冲突需手动解决后执行git rebase --continue
  2. 完成后,RELEASE分支就会变成你期望的结构

后续推送(若分支已推送到远程)

因为重写了历史,需要强制推送更新远程分支:

git push -f

务必通知团队成员更新本地分支:

git checkout RELEASE
git fetch origin
git reset --hard origin/RELEASE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:05:36