Git合并custom分支到业务分支时如何保留分支专属修改?
问题分析与解决方案
结论
仅使用git rebase可以同步custom分支的共用修改,同时保留company_b的专属定制修改,但必须采用正确的操作流程——你之前的错误操作(先merge再rebase)才导致了专属修改丢失。
错误操作的原因
你执行的git merge custom后再git rebase custom是完全错误的:
- 合并操作会生成一个包含custom和company_b混合内容的合并提交
- 后续的变基会把company_b的所有提交(包括这个合并提交)重新应用到custom的最新提交之上,这会导致合并提交中包含的旧内容覆盖你在company_b中删除或修改的专属代码,最终出现代码恢复、专属修改丢失的情况。
正确的变基操作流程
直接在company_b分支上对custom分支执行变基,步骤如下:
- 确保当前company_b分支没有未提交的本地修改(可用
git status检查) - 切换到company_b分支:
git switch company_b - 执行变基,同步custom的最新修改并保留专属提交:
git rebase custom - 如果遇到冲突,手动解决文件中的冲突标记后,执行以下命令继续变基:
若要放弃变基,执行git add <冲突文件名> git rebase --continuegit rebase --abort即可。
为什么这个流程有效
git rebase custom的核心逻辑是:
- 找到company_b与custom分支的最近共同祖先节点
- 把company_b上所有在这个共同祖先之后的专属提交,逐个“重演”到custom分支的最新提交之上
- 最终的company_b分支会先包含custom的所有共用修改,再叠加自己的专属定制,既同步了共用代码,又不会丢失专属修改。
注意事项
- 如果company_b分支已经推送到远程仓库,变基后需要执行强制推送(
git push -f),但必须提前告知团队成员,避免其他人的本地分支与远程分支出现冲突。 - 变基前建议备份当前分支:
git branch company_b_backup,防止操作失误导致数据丢失。
内容的提问来源于stack exchange,提问作者Daviid
相关产品推荐
相关产品推荐

