使用Git对Unity项目进行版本控制

Git是一款免费、开源的分布式版本控制系统。此前做的项目都不大,开发流程也不正规,所以对于版本控制没有什么概念和需求。随着项目越来越大,就有必要使用版本控制了。

我是通过廖雪峰的Git教程对Git入门的,是不错的教程。(但并不同意文章中对Windows的评价)

关于在Unity中使用Git进行版本控制

Unity项目不同于一般程序开发,游戏一般会有大量的美术资源。对于Git的使用需要有额外的优化。

一些参考的文章

http://www.3dgep.com/using-version-control-with-unity/

添加.gitignore

项目中有很多文件是不需要存储在版本库中的,比如一些Unity编辑器自动生成的文件(VS的项目文件.sln/.csproj之类)。在目录下的 .gitignore 文件中添加以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj

# Unity3D generated meta files
*.pidb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt

修改Unity项目设置

Unity使用GUID(全局唯一标识)来指示资源,所以Unity的资源随便怎么移动路径都不会丢失引用,每个资源都会有一个相应的 .meta 文件。在新版本的Unity中Meta Files是默认开启的(不过是隐藏文件),不需要手动开启。

设置项在 Edit->Project Settings->Editor->Version Control

另外还要把Assets Serialization改成Force Text. 这个有争议,还需要调查和试验。相关地址

设置项在 Edit->Project Settings->Editor->Assets Serializatio

最后…

好像没什么了,我使用的远程托管是coding.net而不是GitHub。因为GFW或是ISP的关系上外网比较困难,所以选择用国内的。
不过真的做比较大的项目的时候,这种三方的远程库就不太合适了,毕竟美术资源可能就要占数个GB的大小,上传和下载速度是个限制,不过可以自己搭建一个本地局域网内的Git库。(然而现在不会,没研究过)

1
2
3
4
5
git init
git add .
git commit -m "update"
git remote add origin git@git...
git push origin master