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

Git推送后移除develop、kernel分支多余提交的实现方法

问题场景与诉求

操作前提

  • 所有操作不得破坏master分支的任何内容

问题背景

  1. 初始同步develop分支时执行命令如下:
git checkout develop
git pull upstream develop # 拉取上游develop分支最新更新到本地
git push origin develop # 将本地develop分支同步到个人远端origin仓库
  1. 操作失误在本地develop分支产生错误提交,后续回退操作额外生成3条冗余提交:
d3b229f9 (develop) Merge branch 'develop' of github.com:ROCmSoftwarePlatform/bench into develop
16daa203 Revert "kernel converter tool to create yaml file from lib
97e834cb kernel converter tool to create yaml file from lib"
  1. 基于携带冗余提交的develop分支创建工作分支kernel,执行命令:git checkout -b kernel
  2. 在kernel分支完成全部代码修改后推送远端并创建PR,当前需要将kernel分支变更合入develop,但要求提交历史完全剔除d3b229f9、16daa203、97e834cb这3条冗余记录,最终仅保留有效提交5a555e7a对应的提交信息。

备注:此前尝试对kernel分支执行squash merge操作,无法清除develop分支上已存在的冗余提交记录。
当前kernel分支提交列表如下:

5a555e7a (HEAD -> kernel, origin/kernel) new tool yaml file
d3b229f9 (develop) Merge branch 'develop' of github.com:softwarePlatform/Benchmark into develop
16daa203 Revert "kernel converter tool to create yaml file from lib logic"
97e834cb kernel converter tool to create yaml file from lib logic
f4af1648 (upstream/develop) Merge pull request #1244 from xxxxx/develop
b1a07da2 update version for new release
解决方案

按以下步骤操作即可完全清理冗余提交,全程不会影响master分支:

1. 修复本地及个人远端的develop分支

3条冗余提交是本地develop误操作产生的,上游官方develop分支的基准点为干净的f4af1648,直接重置对齐即可:

# 切换到本地develop分支
git checkout develop
# 拉取上游最新仓库状态
git fetch upstream
# 将本地develop硬重置到上游develop的干净版本,彻底清除本地3条冗余提交
git reset --hard upstream/develop
# 强制推送到个人远端origin仓库,覆盖远端携带冗余提交的develop版本
# 若为多人协作仓库,强制推送前务必同步团队成员,避免其他成员本地旧代码冲突
git push origin develop --force

执行完成后,本地和个人远端的develop分支将完全对齐上游官方版本,无任何冗余提交。

2. 重建干净的kernel分支

原有kernel分支基于错误版本的develop创建,基线携带冗余提交,直接将有效提交迁移到干净基线上即可:

# 基于修复完成的干净develop分支创建临时分支
git checkout -b kernel-clean develop
# 将kernel分支上唯一的有效提交5a555e7a拣选到当前干净分支
git cherry-pick 5a555e7a

拣选完成后查看提交日志,确认分支仅包含上游develop原有提交 + 有效提交5a555e7a,无3条冗余记录即可。

3. 替换原有kernel分支,自动更新PR

验证代码功能、提交历史均无误后,用干净分支替换原有kernel分支,推送到远端后PR会自动同步更新:

# 删除本地携带冗余提交的旧kernel分支
git branch -D kernel
# 将临时干净分支重命名为kernel
git branch -m kernel-clean kernel
# 强制推送到个人远端,覆盖旧的kernel分支
git push origin kernel --force

4. 完成PR合入

此时PR的提交历史仅保留单条有效提交,直接按仓库规范选择merge或squash merge合入即可,不会再出现冗余提交记录。

注意事项
  • 所有操作仅涉及develop、kernel两个分支,完全不会触碰master分支,符合操作要求
  • 执行硬重置、强制推送操作前,确认本地没有未提交的有效代码,避免代码丢失
  • 多人协作场景下,强制推送公共分支(develop)后,通知所有团队成员执行git fetch upstream && git reset --hard upstream/develop同步本地develop版本,避免后续将旧的冗余提交重新推到远端

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:39:20