Git将父分支变更合并到子分支不生效该如何解决?
问题根因
你第一次在B分支执行git pull origin A解决合并冲突时,错误丢弃了A分支的部分变更,且这次合并提交已经被Git标记为「A分支所有提交已合并入B」,因此后续执行git merge A时,Git会判定无新提交需要合并,返回Already up to date提示。
解决方案
根据B分支的使用场景选择对应操作:
场景1:B为个人开发分支,无其他协作人员提交
推荐使用rebase方案,提交历史更简洁:
- 先更新本地A分支到最新版本
git checkout A git pull origin A
- 切换到B分支执行rebase操作
git checkout B git rebase A
- 若出现冲突,逐文件修改解决冲突后执行:
git add <冲突文件路径> git rebase --continue
如果中途需要放弃rebase,可执行git rebase --abort恢复到操作前的状态
4. rebase完成后强制推送至远端(仅个人分支可执行该操作,会修改分支提交历史)
git push origin B -f
场景2:B为多人协作公共分支,不能修改历史提交
方法1:指定合并策略重新合并
git checkout B # 合并时冲突默认以A分支内容为准,需要保留B内容可删除-X theirs参数手动解决冲突 git merge -X theirs A --no-ff
参数说明:
-X theirs表示冲突优先取A分支的内容;--no-ff强制生成新的合并提交,不会修改原有提交历史
合并完成后正常推送即可:
git push origin B
方法2:回退错误合并提交后重新合并
- 查找B分支第一次合并A之前的提交哈希
git log --oneline B
- 软重置B分支到该提交,不会丢失本地修改
git reset --soft <目标提交哈希>
- 重新执行合并操作,解决冲突后推送即可
git merge A git push origin B
同步校验
操作完成后执行以下命令,若无输出则说明A的所有提交已完全同步到B:
git log B..A
内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

