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

如何将feat1分支的提交合并到master,且不引入dev-test分支内容?

解决方案:重构feat1分支历史后合并到master

最优方案:使用git rebase --onto转移提交

这个方法能直接把feat1中仅属于新功能的f1、f2提交,从dev-test分支的基点转移到master分支上,彻底剥离dev-test的环境适配修改(d1、dn),且完整保留feat1的提交历史。

步骤如下:

  1. 拉取最新代码,确保本地分支同步远程仓库:
git checkout master
git pull origin master
git checkout feat1
git pull origin feat1
  1. 执行rebase,将feat1的提交重定向到master:
git rebase --onto master dev-test feat1

命令解释:--onto master 指定新的基点是master分支;dev-test 是原基点,即只处理feat1中在dev-test之后的提交(也就是你的f1、f2);最后feat1是目标分支。

  1. 处理冲突(若有):
    如果rebase过程中出现代码冲突,先手动解决冲突,然后执行:
git add .
git rebase --continue

若想终止操作,执行git rebase --abort即可回到操作前状态。

  1. 合并到master并推送:
    现在feat1分支已经完全基于master,且仅包含f1、f2提交,直接合并即可:
git checkout master
git merge feat1
git push origin master

安全提示

如果不想修改原feat1分支的历史,可以先创建备份分支:

git checkout feat1
git branch feat1-backup

之后再对feat1执行rebase操作,原分支会被保留。


备选方案:精准cherry-pick提交

如果不想修改分支历史,也可以用cherry-pick单独挑选f1、f2提交到master,但需要确保选中所有目标提交:

  1. 找出feat1中仅属于新功能的提交(排除dev-test的修改):
git log --oneline feat1 ^dev-test

这个命令会列出feat1里所有不在dev-test中的提交,也就是你要的f1、f2,复制它们的提交哈希值。

  1. 切换到master分支,执行cherry-pick:
git checkout master
git cherry-pick <f1的哈希值> <f2的哈希值>
  1. 处理冲突(若有):解决后执行git add . && git cherry-pick --continue,终止则用git cherry-pick --abort。

注意:如果feat1的提交之间存在依赖关系,必须按提交顺序执行cherry-pick;若后续feat1有新提交,重复此操作容易遗漏,因此更推荐第一种rebase方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:45:29