一、GIT服务器搭建方式


第一篇文章讲过 GIT 是一个分布式版本管理系统,既然是分布那么必定会涉及远程通信,那么GIT是采用什么协议进行远程通信的呢?

image.png

Git 支持的四种通信协议:

  1. Local(本地协议)
  2. ssh
  3. http(Dumb、Smart)
  4. git

1. Local(本地协议)


基于本地文件系统或共享(NFS)文件系统进行访问。

优点

简单,直接使用了现有的文件权限和网络访问权限,小团队小项目建立一个这样的版本管理系统是非常轻松的一件事。

缺点

这种协议缺陷就是本身共享文件系统的局限,只能在局域网,而且速度也慢。适应场景:小团队,小项目临时搭建版本服务。

演示本地协议使用方式:

从本地 f/git/atals 目录克隆项目
  1. 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 会触发平时用于网路传输资料的进程,传输过来的是打包好的文件,更节约硬盘空间。

2. ssh 协议


git 支持支持利用 ssh 协议进行通信,这是绝大部分 linux、unix 系统都支持的,所以利用该协议架设 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<br />**2.下载并解压源码**<br />**
```shell
$ wget https://github.com/git/git/archive/v2.3.0.zip
# 备用下载链接: https://pan.baidu.com/s/1czwEz8 密码: y3hn
$ unzip v2.3.0.zip
$ cd git-2.3.0

3 编译 安装(如果没有权限就加上sudo)
**

make prefix=/usr/local/git all
make prefix=/usr/local/git install

4 添加环境变量
**

vim /etc/profile
export PATH=/usr/local/git/bin:$PATH
source /etc/profile

5.如果成功显示版本号表示添加成功

git --version
git version 2.3.0

创建一个祼项目
git --bare init liuscoding.git

本地基于远程克隆仓库