一、GIT服务器搭建方式
上一节课我们讲过GIT是一个分布式版本管理系统,既然是分布那么必定会涉及远程通信,那么GIT是采用什么协议进行远程通信的呢?
git支持的四种通信协议:
- Local(本地协议)
- ssh
- http(Dumb、Smart)
- git
1、Local(本地协议)
基于本地文件系统或共享(NFS)文件系统进行访问,
优点:简单,直接使用了现有的文件权限和网络访问权限,小团队小项目建立一个这样的版本管理系统是非常轻松的一件事。
缺点:这种协议缺陷就是本身共享文件系统的局限,只能在局域网,而且速度也慢。
适应场景:小团队,小项目临时搭建版本服务。
- 演示本地协议使用方式:
# 从本地 f/git/atals 目录克隆项目
git clone /f/git/atals/
# 即使是 bare仓库也可以正常下载
git clone /f/git/atals.git
# 基于file 协议克隆本地项目
git clone file:///f/git/atals/
如果在 URL 开头明确的指定 file://,那么 Git 的行为会略有不同。 如果仅是指定路径,Git 会尝试使用硬链接(hard link)或直接复制所需要的文件。 如果指定 file://,Git 会触发平时用于网路传输资料的进程,传输过来的是打包好的文件,更节约硬盘空间。
- 演示通过 file:///协议与直接拷贝的区别。
2、ssh 协议
git 支持支持利用ssh 协议进行通信,这是绝大部分linux、uninx系统都支持的,所以利用该协议架设GIT版本服务是非常方便的
优点:首先SSH 架设相对简单、其次通过 SSH 访问是安全的、另外SSH 协议很高效,在传输前也会尽量压缩数据。
缺点:权限体系不灵活,必须提供操作系统的帐户密码,哪怕是只需要读取版本。
适应场景:小团队、小项目、临时项目
- 演示基于 ssh 协议
这里我们把git 服务必须先安装到linux 系统上,然后才能使用ssh 协议跟git 服务进行通信。
- linux 安装git服务
# 1.安装依赖环境
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker