Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Unity 2019.3+建立Unity智能合并与Git和Meld;_Git_Unity3d_Git Merge_Meld - Fatal编程技术网

为Unity 2019.3+建立Unity智能合并与Git和Meld;

为Unity 2019.3+建立Unity智能合并与Git和Meld;,git,unity3d,git-merge,meld,Git,Unity3d,Git Merge,Meld,我到处寻找关于这个问题的文件,几乎没有成功。谈到这个动态,Unity自己的文档非常不完整。我来这里是为了给你提供我能让它工作的唯一方法。当然,我希望能得到关于如何做得更好的反馈,但就目前情况来看,几乎所有关于这个主题的谷歌搜索都有2年或更长的历史了 Unity文档要求将以下内容添加到.git/config: [merge] tool = unityyamlmerge [mergetool "unityyamlmerge"] trustExitCode = f

我到处寻找关于这个问题的文件,几乎没有成功。谈到这个动态,Unity自己的文档非常不完整。我来这里是为了给你提供我能让它工作的唯一方法。当然,我希望能得到关于如何做得更好的反馈,但就目前情况来看,几乎所有关于这个主题的谷歌搜索都有2年或更长的历史了

Unity文档要求将以下内容添加到
.git/config

[merge]
    tool = unityyamlmerge

[mergetool "unityyamlmerge"]
    trustExitCode = false
    cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"


两者都不起作用。我发现上面的代码块有许多不同的替代方案。我找了好几天,甚至浪费了整个周末。什么都不管用,我也找不到任何关于这件事的最新信息。

在使用Unity 2019.3+和当前版本的Git的Windows 10上,这是我让它工作的唯一方法

mergespecfile.txt 首先,将以下条目添加到
mergespecfile.txt
中,以允许Unity的智能合并使用您选择的diff工具。我用的是Meld。请注意,
--自动合并
是可选的。我的理解是,它将跳过提示您进行合并

文件位置-窗口:
C:\ProgramFiles\Unity\Hub\Editor\\Editor\Data\Tools

unity use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
prefab use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
* use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
文件位置-Mac:
/Applications/Unity/Hub/Editor//Unity.app/Contents/Tools

unity use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
prefab use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
* use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge

.gittributes 接下来将其添加到回购的
.gittributes
。您在此处指定的任何文件类型都将通过Unity的智能合并运行。此处列出的任何的内容都将默认为Git的自动合并,您可以在其中运行
Git mergetool
来调用所选的diff工具进行合并

# Macro for Unity YAML-based asset files.
[attr]unityyaml -text merge=unityyamlmerge diff

# Unity files
*.meta unityyaml
*.unity unityyaml
*.asset unityyaml
*.prefab unityyaml

.git/config 最后,这是最糟糕的部分,请在
.git/config
中添加以下内容。这个文件对语法的使用非常挑剔。与大多数文档相反,使用合并驱动程序似乎是触发此操作的唯一方法

确保更改文件路径以匹配您的版本/操作系统,并将合并/差异工具更改为您喜欢的工具

[merge "unityyamlmerge"]
    driver = 'C:/Program Files/Unity/Hub/Editor/2019.3.14f1/Editor/Data/Tools/UnityYAMLMerge.exe' merge -p \"$BASE\" \"$REMOTE\" \"$LOCAL\" \"$MERGED\"
    name = Unity SmartMerge (UnityYamlMerge)
    recursive = binary
[diff]
    tool = meld
[difftool "meld"]
    path = C:/Program Files (x86)/Meld/meld.exe
[merge]
    tool = meld
[mergetool "meld"]
    path = C:/Program Files (x86)/Meld/meld.exe
    prompt = false

在使用Unity 2019.3+和当前Git版本的Windows 10上,这是我让它工作的唯一方法

mergespecfile.txt 首先,将以下条目添加到
mergespecfile.txt
中,以允许Unity的智能合并使用您选择的diff工具。我用的是Meld。请注意,
--自动合并
是可选的。我的理解是,它将跳过提示您进行合并

文件位置-窗口:
C:\ProgramFiles\Unity\Hub\Editor\\Editor\Data\Tools

unity use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
prefab use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
* use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
文件位置-Mac:
/Applications/Unity/Hub/Editor//Unity.app/Contents/Tools

unity use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
prefab use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge
* use "%programs%\Meld\meld.exe" "%b" "%r" "%l" -o "%d" --auto-merge

.gittributes 接下来将其添加到回购的
.gittributes
。您在此处指定的任何文件类型都将通过Unity的智能合并运行。此处列出的任何的内容都将默认为Git的自动合并,您可以在其中运行
Git mergetool
来调用所选的diff工具进行合并

# Macro for Unity YAML-based asset files.
[attr]unityyaml -text merge=unityyamlmerge diff

# Unity files
*.meta unityyaml
*.unity unityyaml
*.asset unityyaml
*.prefab unityyaml

.git/config 最后,这是最糟糕的部分,请在
.git/config
中添加以下内容。这个文件对语法的使用非常挑剔。与大多数文档相反,使用合并驱动程序似乎是触发此操作的唯一方法

确保更改文件路径以匹配您的版本/操作系统,并将合并/差异工具更改为您喜欢的工具

[merge "unityyamlmerge"]
    driver = 'C:/Program Files/Unity/Hub/Editor/2019.3.14f1/Editor/Data/Tools/UnityYAMLMerge.exe' merge -p \"$BASE\" \"$REMOTE\" \"$LOCAL\" \"$MERGED\"
    name = Unity SmartMerge (UnityYamlMerge)
    recursive = binary
[diff]
    tool = meld
[difftool "meld"]
    path = C:/Program Files (x86)/Meld/meld.exe
[merge]
    tool = meld
[mergetool "meld"]
    path = C:/Program Files (x86)/Meld/meld.exe
    prompt = false