问题
我正在使用 GitLab 对 Unity 项目进行版本控制。我正在尝试设置 git,以便它使用不同的工具来合并根据文件扩展名。我希望 git 使用 WinMerge,因为它合并工具适用于除我想使用 SmartMerge 的文件之外的所有文件。我不希望 git 尝试自动合并我想使用 SmartMerge 的文件。不确定这是否可行。
解决方案尝试
我已将以下内容添加到本地 .git 文件夹中的配置文件中以进行设置git 合并:
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
[merge]
tool = winmerge
[mergetool "winmerge"]
name = WinMerge
trustExitCode = true
cmd = '<path to WinMerge>' -u -e -dl \"Local\" -dr \"Remote\" $LOCAL $REMOTE $MERGED
并且我在我的 repo 顶层的 .attributes 文件中添加了以下内容来指定使用 SmartMerge 的文件类型:
# Unity YAML
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicMaterial2D merge=unityyamlmerge eol=lf
*.physicMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
我认为我感到困惑的部分原因在于 git 如何使用配置文件的 [section “subsection”]。非常感谢任何指导。提前致谢!