ort 合并策略是什么
ort 是 Git 当前的默认合并策略,从 2.34 起取代 recursive 成为 merge 与 rebase 的默认。相比旧策略,它在重命名检测、目录改名与长文件列表上的判断更准确,能减少「明明只改了一处却报冲突」这类误判,同时在大仓上的性能也更好。绝大多数情况下不需要显式指定,只是从老教程里抄参数时要留意版本差异。
基本信息
| 默认版本 | Git 2.34 起为 merge / rebase 的默认策略 |
|---|---|
| 优势 | 重命名与目录变更跟踪更准,冲突提示更少 |
| 显式启用 | 老版本可用 -s ort(2.33 起支持) |
| 对比策略 | recursive、resolve、subtree 等 |
| 平台 | 任意 Git 客户端 |
典型使用场景
- 合并包含大量文件重命名的分支,减少误判冲突
- 排查「改了却没检测到」的诡异合并结果
- 从老教程抄来的 -s recursive 参数在新版本上的行为核对
- 大仓库合并时的性能与冲突质量对比
- 定位目录整体改名后的冲突成因
- 升级 Git 后回归验证合并结果是否符合预期
相关选项示例
相关选项示例
git version # 先确认版本
git merge -s ort -X find-renames feature/rename # 显式指定策略与选项
git merge -s recursive feature/legacy # 旧写法,新版本上等同 ort
git merge -X rename-threshold=50 feature/rename # 调整重命名判定阈值策略关系
| 策略 | 说明 |
|---|---|
| ort | 当前默认,重命名与目录变更处理更准 |
| recursive | 旧默认,新版本上已等同 ort |
| resolve | 更老的策略,仅适用于简单情形 |
策略与选项的支持范围随版本变化(recursive 自较新版本起已等同 ort);从老教程抄参数前先查当前版本文档。
重命名阈值等选项只在确有误判时再调,随意放宽会把真正的文件冲突掩盖掉。
遇到诡异合并结果时的排查顺序
- 先 git version 确认版本,判断默认策略是否符合预期
- 重放一次合并,用 -s ort 显式指定以排除策略差异
- 检查分支里是否有大规模重命名被误判为删除加新增
- 必要时用 -X find-renames 调整判定,再回归验证结果