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

通过剔除已合并到master的提交清理分支提交历史

清理Feature分支提交历史的自动方案

一、核心思路

你的旧提交通过squash合并到master后,提交哈希虽不同,但变更内容已存在于master。我们可以通过对比提交的补丁内容,自动过滤掉master已包含的提交——要么生成干净的新分支,要么直接生成供评审的简化历史。

二、生成干净的新分支(可用于后续提交)

步骤1:拉取最新Master分支

git checkout master
git pull origin master

步骤2:备份原Feature分支(避免误操作)

git branch your-feature-branch-backup

步骤3:自动筛选并创建干净分支

运行以下命令,会基于最新master创建feature-cleaned分支,仅保留master中没有的变更提交:

# 创建基于master的空分支
git checkout -b feature-cleaned master
# 自动筛选feature分支中未被master包含的提交,并应用到新分支
git cherry-pick $(git rev-list --reverse --cherry-pick --right-only master...your-feature-branch)
  • 说明:git rev-list --reverse --cherry-pick --right-only master...your-feature-branch会输出feature分支中补丁未出现在master的提交哈希(按提交顺序排列);git cherry-pick将这些提交依次应用到新分支。

步骤4:处理冲突(如果有)

若cherry-pick出现冲突,解决冲突后执行:

git cherry-pick --continue

确认某提交无需保留时,可跳过:

git cherry-pick --skip

三、仅生成评审用的简化历史(无需修改分支)

如果只是为了方便评审、不想改动原分支,直接用以下命令生成简化内容:

  • 查看需保留的提交列表:
    git log --cherry-pick --right-only --oneline master...your-feature-branch
    
  • 导出完整变更diff(供评审者直接查看):
    git diff master...your-feature-branch > feature-review.diff
    

四、关键命令说明

  • git cherry -v master your-feature-branch:手动验证提交状态(+为需保留,-为已在master中)
  • git rev-list --cherry-pick --right-only:自动筛选分支间独有的提交(基于补丁内容,而非提交哈希)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:30:49