Git 2.50的8字符冲突标记无法被VS Code及VS识别?
Git 2.50 ORT合并引擎导致VS Code/VS无法识别长冲突标记问题
问题现象
- 公司至少三位开发者遭遇Git合并异常:当合并当前分支与传入分支均被重命名的文件时,会生成带8字符冲突标记(
<<<<<<<</========/>>>>>>>)的冲突,但VS Code和Visual Studio的差异工具无法识别这类冲突。 - 手动将8字符标记修改为默认的7字符(
<<<<<<</=======/>>>>>>>)后,VS Code可正常识别冲突并展示差异视图。
根源分析
Git 2.50版本将默认合并引擎切换为ORT,在三方合并场景下,extra_marker_size参数值被设置为1(树深度更大时数值可能更高),导致冲突标记长度从7字符变为8字符;其他场景下该参数默认值为0,标记保持7字符。
涉及工具版本
| 工具 | 版本 |
|---|---|
| Git | 2.50.1 |
| Visual Studio Code | 1.102.0 |
| Visual Studio | 17.14.8 |
复现场景示例
分支拓扑结构:
C2 branchA / \ C1 --------- main \ / C3 ---- branchB
- 在
branchA的C2提交中重命名某文件 - 在
branchB的C3提交中重命名同一文件 - 将
branchA合并回main后,再合并branchB到main时触发上述冲突 - VS Code与Visual Studio均无法展示差异视图,且Visual Studio选择“接受传入”选项时会残留冲突标记
疑问
- 是否有其他开发者遇到相同问题?
- 当前VS Code和Visual Studio确实不支持8字符冲突标记吗?
- 问题是否存在其他潜在原因?
内容的提问来源于stack exchange,提问作者Andree
相关产品推荐
相关产品推荐

