Git分支合并异常:如何仅合并feature/base1步骤4的变更?
解决方案:仅合并feature/base1步骤4的新增变更
Git合并时会将base1中删除a.xml、b.xml和回滚p.yaml的操作纳入合并范围,导致你的base2分支丢失自有修改。要只合并步骤4的新增变更,有以下几种可行方案:
方案1:用git cherry-pick挑选指定提交
适合步骤4提交数量较少的场景:
- 切换到
feature/base1分支,查看提交历史,定位步骤4对应的所有提交哈希值(即删除a、b和回滚p之后的提交):git checkout feature/base1 git log --oneline - 切回
feature/base2分支,将这些提交逐一挑选过来:git checkout feature/base2 git cherry-pick <步骤4提交哈希1> <步骤4提交哈希2> - 若遇到冲突,手动解决后执行以下命令继续:
git cherry-pick --continue
方案2:用git rebase --onto重写分支历史
能让feature/base2直接基于步骤4更新后的feature/base1,同时保留自有a.xml、b.xml和p.yaml修改(注意:若feature/base2已推送到远程仓库,不建议用此方法,会改写历史影响协作者):
- 先找到步骤3完成后的提交哈希(即删除a、b和回滚p的那个提交,记为
<step3_commit_hash>):git checkout feature/base1 git log --oneline - 切换到
feature/base2分支,执行rebase命令:git checkout feature/base2 git rebase --onto feature/base1 <step3_commit_hash> - 若出现冲突,解决后执行:
git rebase --continue
方案3:生成补丁并应用
不想用Git历史操作命令时,可通过补丁提取步骤4变更:
- 切换到
feature/base1,生成步骤4变更的补丁文件:git checkout feature/base1 git diff <step3_commit_hash> feature/base1 > step4_changes.patch - 切回
feature/base2,应用补丁:git checkout feature/base2 git apply step4_changes.patch - 补丁应用成功后,手动提交变更:
git add . git commit -m "Merge step4 changes from feature/base1"
内容的提问来源于stack exchange,提问作者mohan
相关产品推荐
相关产品推荐

