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

如何在合并Git分支时排除源分支的指定提交?

解决方案:仅合并指定提交到stag分支

这里有两种常用的方法来实现你的需求,我会一步步讲清楚:

方法一:使用git cherry-pick(推荐,精准控制单个提交)

这个方法可以直接把指定的提交#com1复制到stag分支,不会带进来#com2。

  1. 先切换到stag分支:
    git checkout stag
    
  2. 执行cherry-pick命令,把#com1对应的提交哈希值(如果#com1是你本地的提交标识,确保Git能识别到对应的提交)应用到stag上:
    git cherry-pick <com1的提交哈希>
    

    小提示:如果不知道#com1的哈希值,你可以切换到dev分支,用git log --oneline查看,每条记录会显示短哈希和提交信息,复制对应的哈希即可。

  3. 如果cherry-pick过程中没有冲突,直接把变更推送到远程stag分支:
    git push origin stag
    
  4. 完成后切回dev分支继续开发,#com2的提交会完好保留在dev上:
    git checkout dev
    

方法二:临时回退dev分支后合并,再恢复(适合合并多个连续提交但排除最后一个的场景)

如果#com1是dev分支上的倒数第二个提交,也可以用这种方式:先临时回退dev到#com1的状态,合并到stag后再恢复dev的#com2。

  1. 切换到dev分支,查看提交日志确认#com1的位置:
    git checkout dev
    git log --oneline
    
  2. 临时回退dev分支到#com1的状态(用--soft参数只会移动HEAD指针,不会丢弃#com2的代码变更):
    git reset --soft <com1的提交哈希>
    
  3. 切换到stag分支,合并当前的dev分支(此时dev指向#com1):
    git checkout stag
    git merge dev
    
  4. 把合并后的stag分支推送到远程仓库:
    git push origin stag
    
  5. 切回dev分支,恢复到之前包含#com2的状态:
    git checkout dev
    git reset --hard HEAD@{1}
    

    解释:HEAD@{1}指的是Git日志中上一次HEAD的位置,也就是回退之前指向#com2的状态,这样就能快速恢复dev分支的原有提交。

额外提醒

  • 操作前建议先拉取远程stag分支的最新更新:git pull origin stag,避免合并时出现不必要的冲突。
  • 如果cherry-pick或merge过程中遇到代码冲突,按照Git的提示手动解决冲突,然后执行git add <冲突文件>,再用git cherry-pick --continue(或git merge --continue)完成操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:09:04