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

Git合并失败遇冲突:新手用git merge --no-ff合并分支求助

你的合并操作本身没有错误,冲突源于分支间的文件变更差异

Hey there! 先给你吃个定心丸:你用的git merge feat_branch --no-ff命令本身是没问题的。--no-ff参数只是强制Git创建一个新的合并提交(而不是快进合并),这不是导致冲突的原因。

为什么会出现这些冲突?

你看到的CONFLICT (modify/delete)冲突,本质是两个分支对同一批文件做了完全相反的操作:

  • 在feat_branch分支里,你删除了src/controller/app.js和src/controller/service.js这两个文件
  • 但在当前的HEAD分支(也就是你执行合并时所在的分支)里,你修改了这两个文件

Git没法自动判断应该保留哪一方的变更,所以就抛出了冲突,并且默认把HEAD版本的文件留在了工作区,等你手动决策。

怎么解决这些冲突?

你需要明确自己想要保留哪一方的操作,然后按以下步骤处理:

步骤1:查看冲突状态

先执行这个命令确认所有冲突文件:

git status

你会看到那两个文件被标记为冲突状态。

步骤2:选择并处理冲突

根据你的需求二选一:

  • 如果想保留当前分支(HEAD)修改后的文件:直接把这些文件加入暂存区,告诉Git你决定保留它们:
    git add src/controller/app.js src/controller/service.js
    
  • 如果想采纳feat_branch的删除操作:手动删除这些文件,然后把删除操作加入暂存:
    rm src/controller/app.js src/controller/service.js
    git rm src/controller/app.js src/controller/service.js
    

步骤3:完成合并

处理完所有冲突后,执行提交完成合并:

git commit

Git会自动打开编辑器生成合并提交信息,你可以直接保存退出,或者修改信息后提交。

(可选)如果想放弃合并

如果中途改变主意,想回到合并前的状态,执行:

git merge --abort

小提示

这种modify/delete冲突在多分支协作中很常见,核心就是明确你想要保留哪一方的变更,然后清晰地告诉Git你的选择就好啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:37:55