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

Git合并过程中会在哪些场景下静默跳过提交?

合并分支时提交变更丢失但提交历史显示已合并的问题

我们定期将源分支Branch B合并至目标分支Branch A,正常情况下合并会同步上次合并后的所有变更,但出现异常:Branch B新增的两个提交里,仅X2的变更被同步到Branch A,X1的变更未合并。关键是提交日志与历史记录显示这两个提交均已完成合并——从提交历史示意图可见,Branch A的最终提交Y1的父提交为Branch B的X1和Branch A的Y2。

提交历史示意图

可能的原因及排查方向

  • 提交X1的变更已被反向修改:若Branch A上的某个提交(如Y2)已将X1的修改回滚,Git会判定这些变更已不存在,合并时不会同步。可执行git diff Y2..X1查看X1相对Y2的变更,再核对Branch A当前代码是否包含这些内容。
  • 合并冲突解决时忽略了X1的变更:合并过程中遇冲突,手动解决时误删X1的修改,导致看似合并完成但变更未保留。可执行git show Y1查看合并提交的diff,确认是否包含X1的变更。
  • Git判定X1为冗余提交:若X1的所有变更已通过cherry-pick等方式出现在Branch A的历史中,Git会标记X1为已合并,不会重复应用。可执行git branch --merged X1检查X1是否已被Branch A包含。

修复建议

  • 若为冲突解决失误:执行git revert Y1撤销合并,重新执行git checkout BranchA && git merge BranchB,仔细处理冲突确保X1的变更被保留。
  • 若为X1已被反向修改:找到反向修改的提交,评估是否需要恢复X1的变更,可通过git cherry-pick X1单独将X1的变更应用到Branch A。
  • 合并后验证:每次合并完成后执行git diff BranchB..BranchA对比分支差异,确认所有预期变更均已同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:22:35