Git服务器(1)

从今天开始Git学习的新的篇幅,接下来的3天将会介绍Git服务器的相关知识。

如果你想与团队的其他成员,可能最好的一种方式,就是将代码共享在大家都可访问的服务器上,选择Git服务器大概有这么2种方法:搭建私有的Git服务器和使用网络上的Git服务器,例如:GitHubGitee等。在这个篇幅中,将着重介绍如何搭建一个私有的Git服务器。

运行一个Git服务器也很简单,首先,你要根据团队的情况选择服务器要使用的通信协议,然后再去使用基础工具来搭建远程服务器。一般情况下,远程服务器就是一个裸仓库,也就是没有对应的工作目录的Git仓库,只是把.git目录下的内容搬过来。

1 协议

Git可使用的协议主要有这么4种:本地协议、SSH协议、Git协议和HTTP协议。

1.1 本地协议

本地协议理解起来很简单,这种协议中,远程仓库就是磁盘上的另一个目录备份而已,它是最基本的传输协议。

使用本地协议的一个情形就是:在团队成员都可访问的网络中创建一个共享的文件系统,每个成员的机器上挂载这个目录系统,然后每个成员成员都可以访问这个仓库,执行拉取、推送等操作。

本地协议中克隆一个仓库的命令是:

$ git clone /srv/git/project.git

或者:

$ git clone file:///srv/git/project.git

这2种方式是有区别的:

  • 第1条方式将会直接复制文件,或者使用硬链接
  • 第2条方式将会启动从网络上拉取数据的进程,这种方式的传输效率比第1种要慢的多,但是,在将数据从其他版本控制系统转入Git时,可去除仓库中外部引用或者多余的对象

本地协议的优点:

  1. 基于文件的仓库配置起来简单,并且容易使用
  2. 可以使用已有的文件访问权限和网络权限来做用户访问控制
  3. 在直接读取其他团队成员的代码时,极其方便

本地协议的缺点:

  1. 共享文件系统配置起来稍微复杂
  2. 难于让本地网络之外的用户访问到
  3. 本地网络访问的速度受限于局域网的带宽和硬件条件
  4. 本地协议不能使基于文件的仓库免遭毁灭性的灾难,因为每个团队成员对于远程仓库的目录拥有可读写的权限

1.2 SSH协议

在局域网搭建的Git服务器中,SSH协议是比较常见的一种。因为大多数服务器会默认配置SSH访问,并且对于没有自带这种功能的服务器来说,配置SSH访问也很简单。和Git协议和HTTP协议类似,SSH协议可根据私钥、公钥来支持身份验证。

使用SSH协议克隆Git仓库的命令:

$ git clone ssh://user@server/project.git

或者使用简短语法:

$ git clone user@server:project.git

如果不提供用户名,则会默认使用当前系统的登录名。

SSH协议的优点:

  1. SSH设置简单,且受众广泛,基本所有的操作系统都支持SSH协议
  2. 提高安全性,原因有2个:一个是所有数据的传输都是加密的,另一个是所有的访问都是经过了身份验证
  3. 数据访问效率高,数据在传输之前都经过了压缩

SSH协议的缺点:

  1. 不支持对于仓库的匿名访问,如果需要实现类似匿名访问的功能,可配置某些团队成员拥有推送的权限,其他人只有只读权限

1.3 Git协议

Git协议是Git自带一种特殊的守护进程,需要在仓库中创建git-daemon-export-ok文件,并监听9418端口。Git协议并没有任何的安全机制,要么每个人都有读写权限,要么都不能访问。因此,基于该协议搭建的Git服务器通常不会打开推送功能。

Git协议的优点:

  1. 速度最快,对于一些项目只需要提供只读权限,可以基于该协议创建
  2. 使用与SSH一样的数据传输机制,但是没有加密传输和用户访问控制等额外开销

Git协议的缺点:

  1. 缺少用户验证机制,一般不会把Git协议作为远程仓库使用的唯一协议,它需要配合其他协议使用;
  2. 配置相对复杂,需要创建指定的文件并且在服务器防火墙中开启9418端口,如果配置成可公网访问的话,还需要配置公司服务器的端口

1.4 HTTP协议

HTTP协议共分为2种:一种是Git 1.6.6版本之前使用的协议,通常是只读的形式,通常称为“非智能HTTP协议”;Git 1.6.6版本之后使用新的智能传输协议,可以通过类似SSH协议的方式来传输数据,通常称为“智能HTTP协议”。这里只介绍“智能HTTP协议”,对于“非智能HTTP协议”感兴趣的朋友,可以在网上查阅相关资料。

智能HTTP协议是当下最普遍的Git协议,它与SSH协议的运作方式非常类似,但是它使用HTTP/S的端口进行通信,并且使用HTTP协议中的各种身份验证方式,这就意味着,它比SSH协议要更容易使用,毕竟,输入用户名和密码要比配置公钥、私钥简单的多,同时,它也能支持匿名用户访问。

HTTP协议的优点:

  1. 使用一个URL就可以请求或者推送数据,仅在需要身份验证时方才会提示输入用户名和密码
  2. 使用用户名和密码来验证用户身份更会被用户所接受,方便、简单
  3. 访问速度快,并且数据传输效率高
  4. HTTP/S端口设置广泛,基本上公司路由都会允许HTTP/S端口的流量
  5. 可以通过HTTPS将仓库以只读的方式分享出来,这样可以进行更加安全的加密传输

HTTP协议的缺点:

  1. 一些服务器上,基于HTTP协议的远程仓库更难以搭建,除此之外,几乎没有其他的缺点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值