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

如何在Git恶意合并(evil merges)场景下解决合并冲突?

处理Git恶意合并(Evil Merge)的冲突解决实践

首先明确:恶意合并(在合并时引入双亲分支都不存在的新代码)本身违背Git合并的设计初衷,会大幅增加历史追溯、回滚的复杂度,非必要绝对不建议使用。但如果确实不得不这么做,以下是可控的实践方案:

核心原则

  • 必须明确记录恶意合并的原因与内容,绝不能悄无声息插入代码
  • 严格缩小新增代码范围,只保留绝对必要的内容
  • 合并完成后同步告知团队成员,避免他人误解合并历史

具体操作步骤

  1. 选择手动解决冲突
    放弃Git默认的三个自动合并选项(接受当前/传入/两者变更),必须通过git mergetool或直接编辑冲突文件的方式手动处理:

    • 先处理常规冲突块(标记为<<<<<<<、=======、>>>>>>>的部分)
    • 在合适位置插入双亲分支均无的新代码行
  2. 强制标记合并完成并添加说明
    处理完文件后,执行git add <冲突文件>标记冲突已解决,再执行git commit。

    • Git会自动生成合并提交信息,但你必须手动追加恶意合并的详细说明,示例:
      Merge branch 'feature/x' into main
      
      【恶意合并说明】:新增订单超时自动取消逻辑,原因是线上紧急修复需要,双亲分支均无此代码
      
  3. 验证合并结果
    提交后立即执行以下命令验证:

    • git diff HEAD^ HEAD:对比合并提交与第一个父分支的差异
    • git diff HEAD^^ HEAD:对比合并提交与第二个父分支的差异
    • git show <合并提交ID>:查看合并提交的完整变更,确认新增代码仅存在于本次合并中,无其他误改
  4. 同步与归档

    • 在团队内部文档或项目合并记录中,单独记录本次恶意合并的细节,包括提交ID、新增内容、触发原因
    • 若后续需要回滚,直接回滚该合并提交即可,避免影响其他历史提交

优先推荐的替代方案

如果不是绝对必要,尽量避免恶意合并:

  • 先将新增代码提交到其中一个父分支,再执行正常合并
  • 创建临时分支,提交新增代码后,将两个父分支合并到临时分支,最后合并到目标分支(这种方式历史追溯更清晰)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:16:01