Unity实验室之版本管理工具git的配置

前言

选择Unity版本之后,下载并安装好(怎么样安装就不说了,自行研究:-)),就该考虑建项目的事情了,是不是很想安装完就立即建项目体验一把呢?先别急,在建之前还有一些事情要考虑,那就是版本管理工具的选择:对于版本管理工具的选择,有人选择使用SVN,有人选择使用VSS,有人使用CVS,有人使用Git,笔者不想在这里讨论哪个好,哪个坏?因为笔者曾遇到过这方面的争论,所以在这里也不想说服谁去用什么?那笔者的推荐是什么呢?是Git,这也是今天要说的重点。如果想看比较,知乎上这篇讨论说的比较好,这里只介绍具体Git的操作,如果打算更深入的了解Git及背后原理,戳这里

Git本地配置

首先要说的是git的本地配置,在命令行下切到项目所在的根目录下,运行
git init
你的项目就开始被git管理了。

上图是笔者项目情况,设置好git后就可以准备提交了。接下来介绍一下gitignore文件。

Git ignore

Git ignore是一个非常有用的文件,它可以忽略掉不必被git管理的文件,如上图中,其实Unity中真正有用的目录就是Assets目录和ProjectSettings目录,我们把其余的都忽略掉,具体做法是:在项目根目录下新建一个.gitingore文件,打开后添加如下内容:

.vscode/*
*.csproj
Library/*
Temp/*
obj/*
*.sln


这下清净了

注意:刚才上面没加入忽略文件前 的图,没有列出Assets目录,这是因为Assets目录是空的,git不会列出空目录,也不会管理空目录,但有时留空目录是为了设计的需要,那怎么办呢?可以在空目录里加一个.gitupkeep文件,这样空目录就可以在git下显示出来了

之后运行

git commit -m "init(填写自己的描述)"
就提交给git管理了。

Git服务端的架设

多人协作项目,首先要架设一台Git服务器做中转,Git服务器可以选择自己准备的机器搭建,也可以选择使用github。

自己搭建步骤

自己在内网搭建的优点是访问速度快,代码比较安全缺点是需要自己准备一台机器,在家不能访问(当然可以搭建VPN访问)

生成裸仓库

现在看如何搭建,这里的搭建环境是Linux系的系统:
在开始架设Git服务器前,需要把现有仓库导出为裸仓库–即一个不包含当前工作目录的仓库。因为服务器只需要保存git记录。不需要项目文件。通过Clone命令加–bare参数就可以

$git clone --bare my_project my_project.git
这个命令类似cp命令的效果:
cp -Rf my_project/.git my_project.git
这个操作的目的都是为了取出Git仓库自身,不要工作目录,然后特别为它单独创建一个目录。有了这个仓库,接下来开始配置服务器,服务器配置好后,将祼仓库放上面,设置好访问权限就可以了。

配置服务器

首先git是需要设置访问协议的,git有许多种协议,具体了解可自行Google,我们这里采用SSH协议。并假设操作系统是标准的Linux发行版如Ubuntu.
- 客户端使用ssh-keygen生成私钥和公钥

```$ssh-keygen -t rsa```
默认会在/Users/{yourusername}/.ssh下生成id_rsa.pub,之后服务器会需要。

- 创建一个操作系统用户git,并建立一个.ssh目录
$sudo adduser git
$su git
$cd
$mkdir .ssh && chmod 700 .ssh
$touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

- 向authorized_keys文件中添加开发者SSH公钥
将id_rsa.pub加入authorized_keys末尾
$cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
- 将生成的my_project.git放到服务器上,设置好权限,就可以了
- 客户端通过如下命令和远程建立联系:
$cd myproject
$ git init
$ git add .
$ git commit -m "initial commit"
$ git remote add origin git@gitserver:/opt/git/project.git
$git push origin master

也可以直接clone
$git clone git@gitserver:/opt/git/project.git

总结

这样我们的git就搭建好了,有了git的强大管理能力,我们就可以着手开始项目开发的事情了。

你可能感兴趣的:(Git与版本)