在Unity 3D中使用Git源代码控制的最佳实践是什么,特别是在处理Unity 3D项目的二进制性质时?请描述工作流程,在.gitignore中包含哪些路径,应该在Unity和/或项目中设置什么设置,以及任何其他应该注意的特殊事情。
注意:我知道使用资产服务器是unity推荐的方式,但出于各种原因,我想使用Git。请不要回答,状态或争论,我应该只是使用资产服务器。资产服务器真的不是我的选择。
在Unity 3D中使用Git源代码控制的最佳实践是什么,特别是在处理Unity 3D项目的二进制性质时?请描述工作流程,在.gitignore中包含哪些路径,应该在Unity和/或项目中设置什么设置,以及任何其他应该注意的特殊事情。
注意:我知道使用资产服务器是unity推荐的方式,但出于各种原因,我想使用Git。请不要回答,状态或争论,我应该只是使用资产服务器。资产服务器真的不是我的选择。
当前回答
我想我可以发布一个更简单的。gitignore给感兴趣的人:
# Ignore Everything
/*
# Except for these
!/.gitignore
!/Assets
!/Packages
!/ProjectSettings
其他回答
你可以使用Github for Unity,这是一个Unity扩展,将git工作流带入Unity的UI中。
Github for Unity刚刚发布了扩展的1.0版本。
它使用git-lfs (git大文件支持)来正确存储大资产 文件锁定,这样其他人就不会覆盖您的资产提交 向/从任何远程存储库推送和拉取 你也可以在Unity资产商店下载:https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069
只有Assets和ProjectSettings文件夹需要置于git版本控制之下。
你可以做一个这样的gitignore。
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs
# Mac
.DS_Store
*.swp
*.swo
Thumbs.db
Thumbs.db.meta
.vs/
除此之外,在Unity中使用git lfs也是很理想的。自从它问世以来,我一直在使用它,我没有遇到任何麻烦。
您需要将这个.gitattributes添加到.gitignore文件旁边
*.cs diff=csharp text
*.cginc text
*.shader text
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
*.a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text
这是我的滚动文件列表。如果使用未列出的其他二进制文件,请添加它们。
我也有文件配置使用yamlmerge,你需要设置这个。你可以在这里阅读:http://docs.unity3d.com/Manual/SmartMerge.html
我想我可以发布一个更简单的。gitignore给感兴趣的人:
# Ignore Everything
/*
# Except for these
!/.gitignore
!/Assets
!/Packages
!/ProjectSettings
我想添加一个非常简单的工作流程,它来自于曾经对git感到沮丧的人。git有几种使用方式,可能最常见的unity是GitHub Desktop, git Bash和GitHub unity
https://assetstore.unity.com/packages/tools/version - control/github -团结- 118069。
本质上它们都做同样的事情,只是用户的选择不同。你可以使用git进行大文件设置,它允许1GB的免费大文件存储,额外的存储可用在数据包中,每月4美元为50GB,这将允许你将文件>100mb推到远程存储库(它将实际文件存储在服务器上和你的repo指针中)
https://git-lfs.github.com/
如果你不想安装lfs,不管什么原因,你可以扫描你的项目文件> 128mb在windows通过键入大小:大在你有你的项目的目录。这对于搜索大文件非常方便,尽管可能会漏掉一些100mb到128mb之间的文件。
git bash的一般格式是
Git添加。(添加要提交的文件)
Git commit -m 'message'(提交带有消息的文件,它们仍然在你的PC上,而不是在远程repo中,基本上它们已经被“版本化”为新的提交)
Git推送(将文件推送到存储库)
git bash对于unity项目的缺点是,如果有一个> 100mb的文件,你不会得到一个错误,直到你推送。然后,您必须通过将头部重置到上一次提交来撤销您的提交。有点麻烦,特别是如果你是git bash的新手。
GitHub桌面的优势是,在你提交100mb的文件之前,它会给你一个弹出的错误消息。然后可以收缩这些文件或将它们添加到.gitignore文件中。
要使用.gitignore文件,请在本地存储库根目录中创建一个名为.gitignore的文件。只需一次一行地添加您想要省略的文件。SharedAssets和其他非资产文件夹文件通常可以省略,并将自动在编辑器中重新填充(包可以重新导入等)。您还可以使用通配符来排除文件类型。
如果其他人正在使用你的GitHub回购,你想克隆或拉你有这些选项可供你以及在GitHub桌面或Git bash。
我没有提到太多关于Unity GitHub包,你可以在编辑器中使用GitHub,因为我个人认为界面不是很有用,我不认为总体上它会帮助任何人熟悉git,但这只是我的偏好。