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

能否将不同分支的提交Cherry-pick至master分支?如何操作?

能否将不同分支的提交Cherry-pick到第三个分支?

当然可行,只要目标分支(这里是master)能兼容这些变更,或者你能处理可能出现的冲突,就可以把合并到develop的A、B分支变更Cherry-pick到master。下面分两种常见场景说明操作步骤:

场景1:A、B分支的单个提交被合并到develop

如果是将A、B分支的每一个独立提交逐一合并到了develop,你可以直接把这些提交逐个Cherry-pick到master:

  • 切换到master分支并拉取最新代码:
    git checkout master
    git pull origin master
    
  • 找到A、B分支上所有合并到develop的提交哈希。你可以用git log develop --oneline查看提交历史,或者用git log --grep="合并分支'A'" develop精准定位相关提交
  • 逐个Cherry-pick这些提交:
    git cherry-pick <提交哈希1> <提交哈希2>
    
  • 若遇到冲突:手动编辑冲突文件,解决后执行git add .,再运行git cherry-pick --continue;如果要跳过当前提交用git cherry-pick --skip,完全放弃操作则用git cherry-pick --abort
  • 所有提交Cherry-pick完成后,推送到远程master:
    git push origin master
    

场景2:通过合并提交(Merge Commit)将A、B合并到develop

如果是用git merge A或git merge B这类命令生成了合并提交,直接Cherry-pick合并提交即可,但需要指定父分支(合并提交有多个父节点):

  • 切换到master并拉取最新代码:
    git checkout master
    git pull origin master
    
  • 找到合并到develop的合并提交哈希,用git log develop --oneline --merges可以快速列出所有合并提交
  • 执行Cherry-pick,-m 1表示以develop作为父分支(合并提交的第一个父节点通常是合并前的develop分支):
    git cherry-pick -m 1 <合并提交哈希>
    
  • 处理冲突的方式和场景1一致,完成后推送到远程master

注意事项

  • Cherry-pick会生成全新的提交哈希,master上的这些提交和develop上的原提交是独立的
  • 如果A、B分支的变更依赖于develop上未同步到master的代码,可能会触发大量冲突。这种情况建议先把develop的必要基础变更合并到master,再进行Cherry-pick;或者如果项目允许,直接将develop合并到master会更简单
  • 操作前建议先创建临时分支测试:git checkout -b cherry-pick-test master,确认所有变更正常后再合并到正式的master分支

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:43:13