如何将Git分支C变基到分支A并排除分支B的所有变更?
实现方案:将Branch C变基到Branch A并丢弃Branch B的变更
原分支结构:
branch A -- a1 -- a2 -- a3 \ branch B -- b1 -- b2 \ branch C -- c1 -- c2
需求:把branch C的提交(c1、c2)直接移到branch A的末尾,完全丢弃branch B的所有变更(b1、b2),最终结构如下:
branch A -- a1 -- a2 -- a3 -- c1 -- c2
最简洁的实现命令:
git rebase --onto branchA branchB branchC
命令解释
--onto branchA:指定变基后的目标分支,即最终要把提交放到branch A的末尾branchB:指定要跳过的提交截止点——只保留branch B之后的提交(也就是c1、c2),完全忽略branch B上的b1、b2branchC:指定要执行变基操作的分支
执行完命令后,branch C就会直接基于branch A的最新提交(a3),带上自己的c1、c2提交,完全没有branch B的变更。如果需要同步到远端仓库,执行:
git push --force-with-lease branchC
注意:
--force-with-lease比直接--force更安全,能避免覆盖其他人的远端提交,多人协作场景下优先使用。
内容的提问来源于stack exchange,提问作者Aiyuni
相关产品推荐
相关产品推荐

