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

能否移除PR中未合并分支的提交历史且保留代码变更?

保留代码变更并移除无关提交历史的方法

当然可以做到,以下是两种实操方案:

方案一:交互式 Rebase 合并提交历史

这个方法直接修改现有分支的提交历史,把 Branch A 的所有提交合并到 Branch B 的提交中:

  • 切换到目标分支 Branch B:git checkout branchB
  • 启动交互式 rebase,以 updated_main 为基准:git rebase -i updated_main
  • 在弹出的编辑器里,你会看到从 updated_main 之后的所有提交(先是 Branch A 的提交,再是 Branch B 的提交):
    • 把 Branch A 所有提交行开头的 pick 改成 fixup(不需要保留 Branch A 的提交说明时用这个),或者 squash(需要编辑合并后的提交信息时用这个)
    • 保存并退出编辑器,Git 会自动把 Branch A 的变更合并到后续提交中
  • 如果过程中出现冲突,解决冲突后执行 git rebase --continue 即可

方案二:新建分支重构提交历史

如果你不想直接修改现有分支的历史,可以用这个更稳妥的方法:

  • 基于 updated_main 新建临时分支:git checkout -b temp_branch updated_main
  • 把 Branch A 的代码变更合并到临时分支,但不保留提交历史:git merge --squash branchA
  • 提交合并后的变更(可以写个简洁说明,比如"整合 Branch A 的代码变更"):git commit -m "整合 Branch A 的代码变更"
  • 把 Branch B 的原提交逐个复制到临时分支:git cherry-pick branchA..branchB
  • 切换回 Branch B,用临时分支覆盖当前分支:git checkout branchB && git reset --hard temp_branch
  • 删除临时分支:git branch -D temp_branch

完成后,Branch B 的提交历史就只会显示你需要评审的 Branch B 相关提交,同时完整保留了 Branch A 的代码变更。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:01:23