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

Git如何从另一分支合并指定commit范围的部分变更到当前分支

Git提取指定范围提交合并到其他分支操作方案

以下操作中所有commitXX占位符,请替换为你仓库对应提交的实际哈希值(写前7位即可)。

方案1:使用git cherry-pick(推荐,操作最简便)

cherry-pick可以直接将指定范围的提交复刻到当前分支,不会引入范围外的变更:

  • 首先切换到branchA分支,确认当前HEAD处于commit01节点:
    git checkout branchA
    
  • 执行范围提交拾取:注意git cherry-pick的范围规则是左开右闭,a..b代表包含b但不包含a,因此要覆盖commit13到commit15三个提交,起始点需要设为commit13的前一个提交commit12:
    git cherry-pick commit12..commit15
    
    如果要更稳妥也可以单独指定三个提交:
    git cherry-pick commit13 commit14 commit15
    
  • 应用过程中如果出现代码冲突,解决冲突后执行git add <冲突文件路径>,再运行git cherry-pick --continue继续后续提交的应用。如果要放弃本次操作回滚到初始状态,执行git cherry-pick --abort即可。

方案2:生成补丁包应用(适合跨仓库/特殊场景使用)

如果分支差异过大导致cherry-pick异常,可以用补丁包的方式实现同样效果:

  • 生成commit13到commit15的补丁文件:
    git format-patch commit12..commit15 --stdout > commit13-15.patch
    
  • 切换到branchA分支:
    git checkout branchA
    
  • 应用补丁包:
    git am < commit13-15.patch
    
  • 遇到冲突的处理逻辑和cherry-pick类似:解决冲突后执行git add <冲突文件路径>,再运行git am --continue继续,放弃操作执行git am --abort。

操作前置建议:为了避免操作失误丢失原有分支内容,操作前可以先给branchA当前节点打临时备份标签:git tag backup-branchA commit01,操作验证无误后可以删除标签:git tag -d backup-branchA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:54:03