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

Git merge时替换文件未触发冲突被直接覆盖,如何合并双分支内容?

为什么merge操作没有触发合并冲突

Git 触发合并冲突的核心前提是:两个分支从共同父节点分叉后,都对同一文件的相同/相邻行做了修改,且 Git 无法自动判断优先采用哪个版本。你遇到的情况属于快进合并(Fast-forward Merge),不会触发三路合并逻辑,因此不会产生冲突:

  • 你在 master 分支提交 test.txt 的修改后,才基于当前 master 节点创建 NEW 分支,此时两个分支的指向完全一致
  • 后续你仅在 NEW 分支对 test.txt 做了修改并提交,切回 master 后 master 分支没有产生任何新提交(或仅修改了其他文件、未改动 test.txt)
  • 此时执行 git merge NEW 时,Git 判定 master 可以直接将指针移动到 NEW 分支的最新提交节点,不需要做内容比对合并,所以直接用 NEW 分支的 test.txt 覆盖了原版本,不会触发冲突。
如何合并两个分支中 test.txt 的内容

按你当前的操作阶段选择对应方案即可:

还未执行 merge 操作

执行带非快进参数的合并命令,强制触发三路合并逻辑:

git merge --no-ff NEW

此时 Git 会检测到两个分支对 test.txt 的修改差异,自动触发冲突提示,按以下步骤操作即可:

  1. 打开 test.txt,找到被 <<<<<<< HEAD(当前 master 分支内容)、=======(分隔符)、>>>>>>> NEW(NEW 分支内容)标记的冲突段
  2. 手动编辑整合两边的内容,删除所有冲突标记
  3. 依次执行 git add test.txt、git commit 完成合并

已经执行了 merge 操作

先回退到 merge 之前的 master 版本(仅 merge 后没有新提交时生效):

git reset --hard HEAD~1

再按上面「未执行 merge」的步骤操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:05