解決Unity遊戲引擎的合併衝突
我正和一個四人的團隊在周末進行一個Unity 3D遊戲項目的工作。這很有趣,但我們遇到了版本控制的問題。使用Git和GitHub,我們遇到了許多不容易解決的合併衝突; 它不僅僅是刪除一個部分或執行強制推送那麼簡單:
<<<<<<< HEAD:main.scene
痛苦
=======
刪除我
>>>>>>>
有很多不必要的本地元資料檔案被推送到我們的存儲庫。我找到的解決方案並不完美,但它有效:
首先,打開Unity編輯器並前往:
編輯 -> 項目設置 -> 編輯器 ->
在版本控制模式中選擇 "**可見Meta文件**"
其次,添加一個 .gitignore
資料檔案像這樣:
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/Assets/AssetStoreTools*
# 自動生成的VS/MD解決方案和項目文件
ExportedObj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
# Unity3D生成的meta文件
*.pidb.meta
# Unity3D在崩潰報告上生成的文件
sysinfo.txt
# Builds
*.apk
*.unitypackage
.DS_Store
然後,提交實際的更改並運行以下命令:
git rm -r --cached .
git add .
git commit -m "Fixed untracked files"
第三,Unity有一個叫UnityYAMLMerge的工具用於合併場景和prefab文件。通過創建一個.gitconfig
文件並使用以下內容來啟用:
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = /Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
下次隊伍的某個成員克隆該項目時,他們可能最初會看到一個空的場景。但是,不必慌張。只需打開已保存的main.scene
(假設您已經保存並提交了場景),其他東西就應該如預期的那樣工作。我希望Unity像其他IDE環境一樣內置源代碼控制。編碼愉快!