将Git源代码控制与 Unity 3D 结合使用的最佳实践是什么,尤其是在处理 Unity 3D 项目的二进制性质时?请描述工作流程,.gitignore 中将包含哪些路径,应在 Unity 和/或项目中设置哪些设置,以及任何其他应注意的特殊事项。
注意:我意识到使用 Asset Server 是 Unity 推荐的方式,但出于各种原因我想使用 Git。请不要回答说明或争论我应该只使用资产服务器。资产服务器真的不是我的选择。
2015 年 10 月更新: GitHub 已经发布了一个名为Git LFS的 Git 插件,它直接处理以下问题。您现在可以轻松高效地对大型二进制文件进行版本控制!
Git 可以开箱即用地处理 3D 游戏。然而这里的主要警告是,随着提交历史的膨胀,对大型(> 5 MB)媒体文件进行版本控制从长远来看可能是一个问题。我们已经解决了我们项目中的这个潜在问题,方法是只在二进制资产被认为是最终版本时对其进行版本控制。我们的 3D 艺术家使用Dropbox来处理 WIP 资产,这既是出于上述原因,也是因为它更快、更简单(没有多少艺术家会积极使用 Git!)。
您的 Git 工作流程在很大程度上是您需要自己决定的,因为您有自己的团队经验以及如何一起工作。然而。我强烈推荐原作者在此处描述的适当命名的Git Flow方法。
我不会在这里深入探讨该方法的工作原理,因为作者完美地描述了它,而且用很少的话也很容易理解。我已经和我的团队一起使用了一段时间,这是迄今为止我们尝试过的最好的工作流程。
这实际上是个人偏好,因为在 Git GUI 或是否使用 GUI 方面有很多选择。但我想推荐免费的SourceTree 应用程序,因为它可以完美地与 Git Flow 扩展插件相结合。
要获取最新版本,请查看 Github 维护的 Unity.gitignore 文件,没有操作系统细节。
# =============== # # Unity generated # # =============== # Temp/ Library/ # ===================================== # # Visual Studio / MonoDevelop generated # # ===================================== # ExportedObj/ obj/ *.svd *.userprefs /*.csproj *.pidb *.suo /*.sln *.user *.unityproj *.booproj # ============ # # OS generated # # ============ # .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db
对于 Unity 3D v4.3 及更高版本:
(在 v4.5 及更高版本中跳过此步骤)External在Unity → Preferences → Packages → Repository.
External
Unity → Preferences → Packages → Repository
打开
Edit
菜单并选择
Project Settings → Editor
:
Version Control Mode
Visible Meta Files
切换Asset Serialization Mode到Force Text。
Asset Serialization Mode
Force Text
File从菜单中保存场景和项目。
File
在 Unity3D 项目中使用 Git 时遇到的几个主要烦恼之一是 Git 不关心目录,并且在从目录中删除文件后会很高兴地留下空目录。Unity3D 将为这些目录生成 *.meta 文件,当 Git 提交不断添加和删除这些元文件时,可能会导致团队成员之间发生争执。
将此 Git 合并后挂钩添加到/.git/hooks/包含 Unity3D 项目的存储库的文件夹中。在任何 Git pull/merge 之后,它会查看哪些文件已被删除,检查它所在的目录是否为空,如果是则删除它。
/.git/hooks/