03.浅谈Git的传输协议

写在前面的话

如果你是初学Git,意在掌握它的基本使用!那么建议你先阅读本章:本地协议模块

为什么把Git的协议篇放到前面来写呢?考虑到:

不是每个人都有Github或Gitlab,如果一开始学就要认人去申请这些东西,然后配置秘钥,创建仓库,可能很多人就死在这个路上了;

先了解Git的内部支持那些协议可以让你更好的学习后续遇到的问题.例如:学习本地协议之后,你完全可以忽略以上所有问题,自己模拟在本地搭建"托管服务"然后学习绝大部分你看到的关于Git的操作资料;

1. 本地协议

什么是本地协议?

你的操作系统[Windows/Linux]就是基于这个东西来访问的;例如:你保存了一个网页到本地,然后打开你保存的网页,你会看到浏览器打开的时候URL地址栏那个地方就是:,而就是本地协议的协议头,可以理解为一个标志:告诉浏览器或Git我使用的是本地协议,你到我本地的路径去找文件

如果什么协议头都没打,直接/开头,Git会默认使用本地协议去你本地找,所以你可以在本地模拟一个类似Github或者Gitlab的仓库托管服务,然后开启你学习Git之路[下一章会告诉大家怎么去搭建,如果你刚刚开始学习Git,你可以直接跳去下一章进行学习了]

优点

简单

直接使用现有文件权限和网络访问权限

缺点

配置共享文件系统难

不方便多位置访问

"远程磁盘"方式访问,配置不便,访问慢

文件协议不保护仓库意外的损坏

2. "哑(dumb)"协议

在Git 1.6.6版本之前只有哑协议可用,比较简单且通常是"只读模式",而且是谁都可以读

"哑协议"的只读限制是因为其服务端没有一个Git的守护进程在持续的关注"客户端"的所需并与之关注,故而使用哑协议,"客户端"是不能向"服务端"传输数据的

由于现在基本很少使用这种协议了,具体我也没使用过这个,这里只是总结官网上的文章稍微加了自己的理解,了解一下!

3. 智能协议

智能协议是Git在版本中引入的,运行在标准的HTTP/S端口上,并提供各种HTTP验证机制,是目前最常用的传输方式。

该协议在服务端运行了两组进程,分别负责上传[客户端的进程连接到服务端进程]和下载数据[客户端的进程连接服务端],它们可以读取本地数据,理解客户端有什么和需要什么,并为它生成合适的包文件.

优点

效率比哑协议高

提供使用各种的HTTP验证机制

即支持 "git://" 协议一样设置匿名服务,也可以像SSH协议一样提供传输时授权和加密数据

可用性强:①不同访问方式,只需一个URL及服务器只在需要授权时提示输入授权信息;②相比SSH协议,设置简单,免去设置公钥问题;③HTTP/S协议被广泛使用,一般的企业防火墙都会允许这些端口的数据通过;④可以在HTTPS协议上提供只读版本库的服务;甚至可以让客户端使用制定的SSL证书.

缺点

架设HTTP/S协议的服务端比SSH协议难

如果你在HTTP上使用需授权的推送,管理凭证会比使用SSH秘钥认证麻烦

4. SSH协议

SSH协议是一个需要验证授权【采用公私密钥】的、普遍、建设简单、使用简单的协议

使用SSH协议克隆项目

优点

建设SSH协议访问服务简单,而且大多数环境下已经支持SSH访问

SSH访问安全--所有传输数据都要经过授权和加密

SSH协议很高效,传输前会尽量的亚索数据[其他的协议也会]

缺点

不能匿名访问:①.不利于项目开源;②.如果你要同事提供匿名只读访问和SSH协议,那么需要搭建SSH服务和架设一个可以让他人访问的服务

生成SSH公钥

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180924G0UI2700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券