FeastSC 发表于 2022-10-14 09:55

unity版本控制 Git(一、本地管理)

一、简介

最近在发布unity入门基础课程:手把手教你做植物大战僵尸
【植物大战僵尸】手把手教你做游戏——7. 僵尸下篇:受击_哔哩哔哩bilibili_植物大战僵尸
随着课程进展,发现版本的迭代还是需要用版本控制来管理下,否则后期会难以维护。
因此本文我想用最简单的流程,教大家搭建一个git版本控制,用来很方便的管理unity项目。

本文为第一篇文章:一、本地管理
后续会发布:二、远程管理等文章
将这部分知识系统归纳下。
如果对版本控制、游戏开发有兴趣的同学可以关注我: @打工人小棋

二、前期调研

在选择版本管理工具的时候,我也做了一些调研,来决定最后使用哪个工具。
git:分布式管理,不仅可以用于unity,现在大多数产品都在用。
svn:使用同一个服务器管理,安全性更高,很多团队,包括我们公司都还在用。
PlasticSCM:unity自研的版本管理工具,缺点是只能用在unity(Unity 新一代版本控制系统 PlasticSCM 上线)

最终选择git,原因是这个技术较为通用,学会了之后将来去其他公司也可以用、
我们在学习的过程中,应该优先选择热门的的工具,让自己立于不败之地。

git简介和学习网站:Git简介
git下载地址:Git - Downloads

三、准备工作

为了更好的使用git版本管理,我们需要对unity项目做一些设置工作,这一小节分为几个部分:

[*]创建测试项目
[*]Edit->Version Control设置
[*]Edit->Project Settings->Editor设置

[*]创建测试项目
(最简单的,直接新建一个2d项目,我这里直接把原本PVZ课程复制了一份作为测试项目)


创建完成后的项目目录如下:(应该包含如下这些文件夹)


2. Edit->Version Control
将Version Control选项下的Mode设为Visual Meta Files,这样Unity3D将为项目中的每个文件或者每个文件夹生成对应的.Meta文件。该文件是一个文本文件,记录了对应文件的相关信息,版本控制软件可以以此来对文件版本进行对比和合并操作。


3. Edit->Project Settings->Editor
Asset Serialization Mode 选项 选择“Force Text”
做这个设置的原因是:unity3D中的资源默认是以二进制的形式进行组织的,这种组织方式对版本控制来说是不合适的,我们希望在版本控制中看到文本的变化,而不是看到乱七八糟的二进制乱码。


四、创建git本地仓库

准备工作完成之后,我们就可以开始创建版本管理仓库,这一小节分为如下几个基本操作:

[*]初始化仓库
[*].gitignore
[*]add/commit
[*]回退操作

[*]初始化仓库
这一步骤要先安装git,可以参考一、简介中的git下载流程,打开终端检测下下载是否成功:


如果看到version就代表成功了!
然后我们回到刚刚新创建的项目路径下,在这个路径中打开终端:


在这个路径中输入:git init
$git init
Initialized empty Git repository in /Users/imuhero/program/unity/PVZ_Git/.git/成功后会在项目文件夹中发现多了一个.git文件夹


这就代表我们初始化git本地仓库成功了。

2. .gitignore
在Unity3D中进行版本控制主要针对 Assets 和 ProjectSetting 这两个文件夹,因为除此以外的文件和文件夹都是Unity3D在运行过程中产生的临时文件,这些文件会在使用Unity3D打开项目后重新生成,因此无需对这些文件或文件夹进行版本控制
创建一个.gitignore文件


在文件中填入我们要忽略的文件。
Library/
Temp/
*.sln
*.csproj
*.sln
*.userprefs
*.unityproj
*.DS_Store


3. add/commit
先用git status看下当前仓库的状态:


这时候可以看到,.gitignore 中罗列的文件都被忽略了,如果不想上传Log、.vscode等文件夹也可以一并添加上去,最后只需要留下Assets和ProjectSettings文件夹即可。
修改后:


现在把项目文件添加到git本地版本控制中:
输入:git add ./ 将文件添加到暂存库
输入:git commit -m "Init unity project" 将文件提交到版本管理
输入:git log 查看提交记录

五、修改和回退

我们在开发游戏的过程中会不断的产生修改,很可能把原本正常的一个功能修改的不能使用,这时候想要复原都追悔莫及。现在有了版本管理工具,这个操作就变得无比简单了。
假设我们新建了一个文件:test_error.txt


文本内容是:My stupid boss!
现在,你把这个文件commit上去:
git add ./
git commit -m "Add Error Text"
git log

这个文本很明显是写错了,不可能是你的真实心声(也可能是)O(∩_∩)O哈哈~。
现在你想回退到上一个版本怎么办呢?
因为这个项目很小,你可以很容易找到error_text.txt,然后把他删掉。但是当实际工作中,代码比较多的时候,锁定问题往往非常困难,这时候就可以使用git reset,帮助我们回退到上一个正确的版本。

[*]返回上一个版本^
git reset --hard HEAD^2. 返回指定版本:
(后面的f2b63是git log看到的提交记录的标号前缀)
git reset --hard f2b63



回退后,可以看到error_text.txt也消失了,这是你就可以在上一个正确的版本基础上重新开始你的开发工作了。
六、总结:

本文通过一个简单的例子教大家如何对unity项目进行一些基础设置,而后又通过一些基础git指令完成了创建本地仓库、修改和回退相关的操作,你学会了吗?
我是小棋,一名游戏研发攻城狮,关注我,我们一同成长!
@打工人小棋

参考文档:

Unity3D项目版本控制-腾讯游戏学堂
Unity之git版本控制_帮助文档的博客-CSDN博客_unity版本控制
Unity 新一代版本控制系统 PlasticSCM 上线
总结自己的Git常用命令 - 一路转圈的雪人 - 博客园
Git远程操作详解 - 阮一峰的网络日志
页: [1]
查看完整版本: unity版本控制 Git(一、本地管理)