15.Git四种协议-本地协议(local)、HTTP协议、SSH协议、Git协议

1.本地协议(loacl)

  最基本的协议,其远程仓库其实就是硬盘内部的一个目录(例如D:\\project)。常见于团队内的人对一个共享的文件系统(例如NFS)具备访问权限,或者多人共用一台电脑的状况。git

当搭建好硬盘上面的远程仓库以后,可使用 git clone /d/project 来克隆本地的远程仓库。shell

还可使用带file协议的路径: git clone file:///d/project 克隆本地远程仓库。安全

区别:1.仅指定路径:Git尝试使用硬连接(hard link)或直接复制所须要的资料;2.使用file://协议,Git触发用于网络传输资料的进程,效率低,慢。服务器

本地协议的优势:搭建简单。直接使用了现有的文件权限和网络访问权限,若是已经有了共享文件系统,创建版本库会十分容易,只须要像设置其余共享目录同样,将一个Git仓库放在你们都可以访问到的路径并设置好读写权限就能够了。网络

缺点:不方便从多个位置访问,例如你在公司的电脑上搭建了本地仓库,你想在家里访问就有点困难了。不能保证Git仓库的安全,因为每个人都具备仓库目录完整的shell权限,没有方法能够阻止他们删除或者破坏仓库。ssh

2.HTTP协议

哑(DUMP)HTTP协议(旧,不多使用了):只支持只读模式。工具

智能(smart)HTTP协议(新,GitHub目前就使用了这种协议):支持读写模式。既能够像git://协议同样设置匿名服务,又能够像SSH同样提供传输时的受权和加密,并且只用一个URL就能够加密

获得git://和SSH的功能,省去了为不一样的需求设置不一样的URL。 HTTP协议推送(push)以及拉取(pull),服务器都会询问你的用户名和密码。spa

HTTP协议的优势:不一样的访问方式只须要一个URL,服务器只在须要受权时提示输入受权信息。code

相对于SSH而言,不须要生成SSH秘钥对再把秘钥上传到服务器上。

HTTP/S被普遍采用,通常的企业防火墙都会容许这些端口的数据经过。

缺点:在一些服务器上,架设HTTP/S协议会比SSH协议棘手一些;每次须要输入用户名和密码,管理这些凭证会比较麻烦一些(固然你可使用凭证存储工具,keychain(OSX))。

除此以外没有别的缺点。

3.SSH协议

  架设Git服务器时经常使用SSH协议做为传输协议,由于大多数环境都支持SSH访问,即便不支持也比较容易搭建。

$ git clone ssh://user@server/project.git //使用ssh协议clone一个仓库

优势:1.架设简单;2.数据传输时是安全的(全部数据传输时都通过受权和加密);3.高效,和其余3种协议同样,在传输数据时也会尽可能压缩数据。

缺点:不能经过它实现匿名访问。即便使用者只须要读取数据,使用者也要有经过SSH访问你主机的权限,不利于开源项目。

4.Git协议

  包含在Git里的一个特殊的守护进程中,监听一个特定的端口9418(相似于SSH服务,可是无需任何访问受权)。

优势:目前是Git所使用的协议里面最快的。若是你的项目不须要为写进行用户受权,可使用Git协议。

缺点:1.缺少受权机制,一旦放开推送操做,意味着网络上的任何人都能向你的项目推送代码;2.架设难。

相关文章
相关标签/搜索