Git服务器(1)
从今天开始Git学习的新的篇幅,接下来的3天将会介绍Git服务器的相关知识。如果你想与团队的其他成员,可能最好的一种方式,就是将代码共享在大家都可访问的服务器上,选择Git服务器大概有这么2种方法:搭建私有的Git服务器和使用网络上的Git服务器,例如:GitHub、Gitee等。在这个篇幅中,将着重介绍如何搭建一个私有的Git服务器。运行一个Git服务器也很简单,首先,你要根据团队的情况选择服务
从今天开始Git
学习的新的篇幅,接下来的3天将会介绍Git
服务器的相关知识。
如果你想与团队的其他成员,可能最好的一种方式,就是将代码共享在大家都可访问的服务器上,选择Git
服务器大概有这么2种方法:搭建私有的Git
服务器和使用网络上的Git
服务器,例如:GitHub
、Gitee
等。在这个篇幅中,将着重介绍如何搭建一个私有的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 SSH协议
在局域网搭建的Git
服务器中,SSH
协议是比较常见的一种。因为大多数服务器会默认配置SSH
访问,并且对于没有自带这种功能的服务器来说,配置SSH
访问也很简单。和Git
协议和HTTP
协议类似,SSH
协议可根据私钥、公钥来支持身份验证。
使用SSH
协议克隆Git
仓库的命令:
$ git clone ssh://user@server/project.git
或者使用简短语法:
$ git clone user@server:project.git
如果不提供用户名,则会默认使用当前系统的登录名。
SSH
协议的优点:
SSH
设置简单,且受众广泛,基本所有的操作系统都支持SSH
协议- 提高安全性,原因有2个:一个是所有数据的传输都是加密的,另一个是所有的访问都是经过了身份验证
- 数据访问效率高,数据在传输之前都经过了压缩
SSH
协议的缺点:
- 不支持对于仓库的匿名访问,如果需要实现类似匿名访问的功能,可配置某些团队成员拥有推送的权限,其他人只有只读权限
1.3 Git协议
Git
协议是Git
自带一种特殊的守护进程,需要在仓库中创建git-daemon-export-ok
文件,并监听9418端口。Git
协议并没有任何的安全机制,要么每个人都有读写权限,要么都不能访问。因此,基于该协议搭建的Git
服务器通常不会打开推送功能。
Git
协议的优点:
- 速度最快,对于一些项目只需要提供只读权限,可以基于该协议创建
- 使用与
SSH
一样的数据传输机制,但是没有加密传输和用户访问控制等额外开销
Git
协议的缺点:
- 缺少用户验证机制,一般不会把
Git
协议作为远程仓库使用的唯一协议,它需要配合其他协议使用; - 配置相对复杂,需要创建指定的文件并且在服务器防火墙中开启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
协议的优点:
- 使用一个
URL
就可以请求或者推送数据,仅在需要身份验证时方才会提示输入用户名和密码 - 使用用户名和密码来验证用户身份更会被用户所接受,方便、简单
- 访问速度快,并且数据传输效率高
HTTP/S
端口设置广泛,基本上公司路由都会允许HTTP/S
端口的流量- 可以通过
HTTPS
将仓库以只读的方式分享出来,这样可以进行更加安全的加密传输
HTTP
协议的缺点:
- 一些服务器上,基于
HTTP
协议的远程仓库更难以搭建,除此之外,几乎没有其他的缺点
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)