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

配置UnityYAMLMerge与Git时提示“文件或目录不存在”

Git合并冲突时UnityYAMLMerge路径找不到的问题

执行git merge遇到冲突后,运行git mergetool提示<C:/Q/test-games/unityEditor/2021.3.5f1c1/Editor/Data/Tools/UnityYAMLMerge.exe>: No such file or directory。

已确认:

  • Git配置中添加了UnityYAMLMerge相关设置,路径直接运行可正常启动程序
  • Unity项目设置:VersionControl设为“Visible meta files”,Editor-AssetSerialization-Mode设为“ForceText”
  • 尝试过修改路径为双反斜杠、重命名含连字符文件夹,问题依旧

Git Bash执行git mergetool输出

ASUS@LAPTOP-5COEIH28 MINGW64 /c/Q/test-games/project/unity/WarSimulator/WarSimulator (test1|MERGING)
$ git mergetool
Merging:
Library/ArtifactDB
Library/Bee/backend_profiler0.traceevents
Library/Bee/fullprofile.json
Library/Bee/tundra.digestcache
Library/Search/transactions.db
Library/SourceAssetDB
Library/StateCache/SceneView/8c/8cd7c613bf844de3b80696e27a479d5e.json
Logs/AssetImportWorker0-prev_BACKUP_859-prev.log
Logs/AssetImportWorker0-prev_BASE_859-prev.log
Logs/AssetImportWorker1.log
UserSettings/Layouts/default-2021.dwlt

Normal merge conflict for 'Library/ArtifactDB':
  {local}: modified file
  {remote}: modified file
/mingw64/libexec/git-core/git-mergetool--lib: line 141: <C:/Q/test-games/unityEditor/2021.3.5f1c1/Editor/Data/Tools/UnityYAMLMerge.exe>: No such file or directory
Library/ArtifactDB seems unchanged.
Was the merge successful [y/n]?

gitattributes内容

# Auto detect text files and perform LF normalization
* text=auto
*.unity binary
*.prefab binary
*.asset binary

Git config内容

[branch "main"]
    remote = origin
    merge = refs/heads/main
[merge]
tool = unityyamlmerge

[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<C:\\Q\\test-games\\unityEditor\\2021.3.5f1c1\\Editor\\Data\\Tools\\UnityYAMLMerge.exe>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
[branch "test1"]
    remote = origin
    merge = refs/heads/test1

[merge]
tool = unityyamlmerge

[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<C:/Q/test-games/unityEditor/2021.3.5f1c1/Editor/Data/Tools/UnityYAMLMerge.exe>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
[branch "test2"]
    remote = origin
    merge = refs/heads/test2

解决方法

  1. 清理重复的Git配置项
    Git config中重复定义了[merge]和[mergetool "unityyamlmerge"],保留一组即可。打开配置文件(全局或项目级),删除重复块,只保留:

    [merge]
    tool = unityyamlmerge
    
    [mergetool "unityyamlmerge"]
    trustExitCode = false
    cmd = 'C:/Q/test-games/unityEditor/2021.3.5f1c1/Editor/Data/Tools/UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
    
  2. 移除路径两端的尖括号
    错误提示中路径被尖括号包裹,导致Git无法识别正确路径。确保cmd中的程序路径没有<>,仅用单引号包裹即可。

  3. 改用Git Bash兼容的路径格式
    在Git Bash中,可将Windows路径转换为MinGW格式(把C:/改为/c/),修改后的cmd如下:

    cmd = '/c/Q/test-games/unityEditor/2021.3.5f1c1/Editor/Data/Tools/UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
    
  4. 验证配置生效
    执行git config --list查看配置,确认merge.tool和mergetool.unityyamlmerge.cmd设置正确且无重复。

  5. 忽略Unity Library目录
    当前冲突文件位于Library目录,这是Unity的缓存目录,无需提交到Git。将Library/添加到.gitignore,避免后续出现不必要的合并冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:00:35