1 参考
所有相关细节均可以从该文档出获取:
http://git.oschina.net/progit/4-%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git.html#
2 安装
Git并不存在Server端和Clint端之分,在Git Server上安装的也还是Git。最简单的安装方式是直接用系统提供的包管理工具。例如CentOS/RHEL,可以使用:
yum install git
3 协议
Git支持四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议, 我们来简单快速地过一下这四种协议。
3.1 FILE 本地协议
对于本地协议来讲几乎只有一种可能的应用场景:即团队使用的是共享的文件系统(例如 NFS),团队中的每一个成员都能向访问本地文件系统一样访问它。
3.2 SSH 协议
SSH是Git最常用传输协议,这是应为SSH本身已经非常成熟且通用的访问协议了,Git基于SSH是非常聪明的选择。另外SSH是四种协议中唯一一个同时支持读写操作的网络协议。
一个典型的SSH协议的repo是这样的:
git clone user@gitserver:/path/to/my-project.git
3.3 GIT 协议
Git 协议是现存最快的传输协议。如果你在提供一个有很大访问量的公共项目,或者一个不需要对读操作进行授权的庞大项目,架设一个 Git 守护进程来供应仓库是个不错的选择。它使用与 SSH 协议相同的数据传输机制,但省去了加密和授权的开销。
3.4 HTTP/S 协议
HTTP 协议的好处是易于架设。几条必要的命令就可以让全世界读取到仓库的内容。
简单总结一下: 如果是公司的项目,SSH可能是你们团队唯一需要使用的协议。如果是开源项目或者是允许对项目进行匿名只读访问,那么除了SSH 协议之外,还需要支持Git或Http/s协议以便他人访问读取。
4 配置
实际上Git并无特别的配置,只是如果我们使用SSH协议进行数据传输的话我们需要创建专职的登陆账号和登入密钥,因此所谓的“配置”其实是SSH相关的配置。
4.1 GIT(SSH) SERVER端配置
创建Git用户和用户组
groupadd git
useradd -g git -d /var/git git
命令本省非常简单, 这里要解释的是为什么我们要创建这个git用户,这个用户不是为了运行Git而创建的专职用户,而仅仅是为了SSH访问而创建的。正如我们在前面“SSH协议”一节中提到的地址格式:
git clone user@gitserver:/path/to/my-project.git
这里的“user@gitserver”实质上就是SSH在登入时提供的用户和远程主机的命令行格式,所以说,既然我们需要使用SSH的方式登入并进行数据读写,总归是要有一个登入账户吧?OK,那就创建一个叫git专用账户来专门支持git的数据传输吧。
另外,我们把git用户的home目录设定为了/var/git, 用以区别一般的登入账户。而这个/var/git下,是放置所有repository的理想位置。
4.2 GIT(SSH) CLIENT端配置
同样的,并没有什么真正的git client端配置,还是SSH登陆的问题,无非就是为本地用后创建SSH密钥对,并把公钥拷贝到Server端git用户的~/.ssh/authorized_keys中,简单讲就是:只要本地能通过密钥登入git@gitserver就算是完成了客户端的配置。
关于配置SSH密钥登入,本文不再赘述。只是结合这里的场景重复一个角色:客户端要访问Git Server则应由客户端生成密钥,私钥客户端保存,公钥拷贝至Git Server的Git用户的authorized_keys文件中。
5 操作
配置完成之后,我们就可以在Server端创建(初始化)Repository了。假定的我们要创建的项目就叫“project”,我们在应该在Server端执行如下命令:
$ cd /var/git
$ mkdir project.git
$ cd project.git
$ git --bare init
参数–bare指明创建的是一个不包含工作目录的“裸”仓库。
接下来,某个客户端就可以把这个repo加为远程仓库,再推送一个分支,从而把第一个版本的项目文件上传到仓库里了。命令如下:
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/var/git/project.git
$ git push origin master
一但有文件push到远程仓库,其他的客户端就可以clone了:
$ git clone git@gitserver:/var/git/project.git
(责任编辑:IT) |