首页/开发/Git 与协作速查/git merge 合并策略选择
合并变基与冲突71 条

git merge 合并策略选择

git merge 支持多个底层策略:ort(当前默认)、resolve、recursive(历史默认别名)、octopus、ours、subtree;日常几乎只用默认,特殊场景才显式指定。

Git 与协作速查开发更新于 2026-10-12
指定方式git merge -s <策略> <分支>
默认策略ort(Git 2.34 起;此前为 recursive)
典型用途ours 丢弃对方改动、subtree 合并子项目目录、octopus 同时并多个分支

常见策略对照

策略行为使用场景
ort三方合并,重命名检测较完整默认,常规合并
resolve较旧算法,仅两方文件级合并极少用,历史兼容
octopus一次合并多个分支多分支批量并主干、无冲突时
ours忽略对方全部内容,仅记录合并明确以本分支为准的旧分支
subtree按子目录对齐合并未使用 subtree 元数据的旧式子项目
大多数仓库不需要改策略;跨项目合并优先了解 subtree/子模块(见进阶条目)而不是长期依赖 -s subtree。

易错点

  • -s ours 会彻底忽略对方改动,误用可能悄悄丢掉同事的提交,只能用于「确实以本分支为准」的场景
  • 策略选项(-X)与策略(-s)是两回事:-X ours 只处理冲突块,-s ours 丢弃整棵树的对方内容

数据来源与参考

  • Git 官方文档:git-merge(MERGE STRATEGIES)
  • Git 2.34 Release Notes(ort 成为默认策略)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌