Git详解之协议/速度/安全

协议概述

  Git共享服务的实现方式大致分为四种:文件共享类型、git类型、ssh类型、http类型;

本地协议

  本地协议:文件共享类型,是对Git项目,通过文件共享的方式;如NFS、FTP、samba、san、ISCSI等方式进行Git项目共享;比如这样:git clone /opt/git/project.git,又或者是这样:git clone file:///opt/git/project.git。如果在URL开头中使用了file://,那么git会以一种略微不同的方式运行。如果你只给出路径,Git 会尝试使用硬链接或直接复制它所需要的文件。如果使用了 file:// ,Git 会调用它平时通过网络来传输数据的工序,而这种方式的效率相对较低。使用 file:// 前缀的主要原因是当你需要一个不包含无关引用或对象的干净仓库副本的时候 — 一般指从其他版本控制系统导入的,或类似情形。

优点:简单粗暴、保留原有文件的权限
缺点:很难控制从不同位置的访问权限、且速度受共享协议的限制

SSH协议

ssh协议:Git项目共享中使用最常见的协议估计就是SSH了。这是因为大多数环境已经支持SSH对服务器的访问,就算没有,架设起来也很容易。SSH 也是唯一一个同时支持读写操作的网络协议。另外两个网络协议(HTTP 和 Git)通常都是只读的,所以虽然二者对大多数人都可用,但执行写操作时还是需要 SSH。SSH 同时也是一个验证授权的网络协议;而因为其普遍性,一般架设和使用都很容易。通过SSH克隆一个Git仓库,你可以像下面这样给出ssh://的URL:git clone ssh://[email protected]/project.git或者git clone [email protected]:project.git。如果不指名用户,Git默认会使用当前用户连接;如果不指名协议,Git会默认采用ssh协议进行传输。

优点:同时读写、架设相对简单、维护方便、传输安全、高效的传输速度
缺点:无法匿名访问

GIT协议

  Git协议:这是一个包含在 Git 软件包中的特殊守护进程; 它会监听一个提供类似于 SSH 服务的特定端口(9418),而无需任何授权。打算支持 Git 协议的仓库,需要先创建 git-daemon-export-ok 文件 — 它是协议进程提供仓库服务的必要条件 — 但除此之外该服务没有什么安全措施。要么所有人都能克隆 Git 仓库,要么谁也不能。这也意味着该协议通常不能用来进行推送。你可以允许推送操作;然而由于没有授权机制,一旦允许该操作,网络上任何一个知道项目 URL 的人将都有推送权限。不用说,这是十分罕见的情况。

优点:传输速度快,甚至比SSH更加快,可匿名
缺点:缺少授权机制,不安全

HTTP/HTTPS协议

  HTTP/HTTPS协议:HTTP 或 HTTPS 协议的优美之处在于架设的简便性。基本上,只需要把 Git 的裸仓库文件放在 HTTP 的根目录下,配置一个特定的 post-update 挂钩(hook)就可以搞定(Git 挂钩的细节见第 7 章)。此后,每个能访问 Git 仓库所在服务器上 web 服务的人都可以进行克隆操作。

优点:使用 HTTP 协议的好处是易于架设。几条必要的命令就可以让全世界读取到仓库的内容。花费不过几分钟。HTTP 协议不会占用过多服务器资源。因为它一般只用到静态的 HTTP 服务提供所有数据,普通的 Apache 服务器平均每秒能支撑数千个文件的并发访问 — 哪怕让一个小型服务器超载都很难。
缺点:HTTP 协议的消极面在于,相对来说客户端效率更低。克隆或者下载仓库内容可能会花费更多时间,而且 HTTP 传输的体积和网络开销比其他任何一个协议都大。因为它没有按需供应的能力 — 传输过程中没有服务端的动态计算 — 因而 HTTP 协议经常会被称为傻瓜(dumb)协议。更多 HTTP 协议和其他协议效率上的差

参考地址:http://blog.csdn.net/liangpz521/article/details/21534849

速度的比较

最快的是Git、其次是ssh、接着是本地协议、最后是http协议

安全的比较

最安全的是ssh、其次是http协议、接着本地协议、最后是git

,又或者是这样:git clone file:///opt/git/project.git。如果在URL开头中使用了file://,那么git会以一种略微不同的方式运行。如果你只给出路径,Git 会尝试使用硬链接或直接复制它所需要的文件。如果使用了 file:// ,Git 会调用它平时通过网络来传输数据的工序,而这种方式的效率相对较低。使用 file:// 前缀的主要原因是当你需要一个不包含无关引用或对象的干净仓库副本的时候 — 一般指从其他版本控制系统导入的,或类似情形。

原文地址:https://www.cnblogs.com/guge-94/p/11267256.html

时间: 2024-10-08 06:29:44

Git详解之协议/速度/安全的相关文章

【转】Git详解之一:Git起步

原文网址:http://blog.jobbole.com/25775/ 原文:<Pro Git> 起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git 会如此流行,为什么你应该立即开始使用它.(查看Git详解系列的全部文章) 1.1 关于版本控制 什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统.在

git详解

git详解 git是从android出现,就作为版本管理工具.由于很多人从svn开始使用,简单的check in & check out操作,很难理解和适应通过命令行操作的git的管理. 所以很多人继续使用图形界面的git管理工具,尤其android studio自带git的图形操作界面,使得很多人懒得学习和掌握git的具体运行规则.从而导致很多分支冲突,管理混乱的情况.以下是笔者写的一篇关于git比较详细的介绍.常见关于git的操作,都包含在内.由于英文很简单,就不做翻译了.只强调一点,要想真

详解http 协议

HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式. 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POST.每种方法规定了客户与服务器联系的类型不同.由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快. 3.灵活:HTTP允许传输任意类型的数据对象.正在传输的类型由Content-Type加以标记. 4.无连接:无连接的含义是限制每次连接只处理一个请求.服务器处理完客户的请求,并收到客户的应答后,即断开连接.采用这

图解Git详解命令

图解Git命令 上面的四条命令在工作目录.暂存目录(也叫做索引)和仓库之间复制文件. ·git add files把当前文件放入暂存区域. ·git commit 给暂存区域生成快照并提交. ·git reset --files 用来撤销最后一次git add files,你也可以用git reset 撤销所有暂存区域文件. ·git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修改. 你可以用 git reset -p, git checkout -p, o

Git详解之三 Git分支

相关文档 — 更多 Git 基础培训.ppt GIT 使用经验.ppt GIT 介绍.pptx GIT 分支管理是一门艺术.docx Eclipse上GIT插件EGIT使用手册.docx git/github学习笔记.doc git 版本控制系统.docx Git开发管理之道.pdf Git内部培训资料.pptx Git权威指南-第5篇-第32章-Gerrit.pdf Gitolite 构建 Git 服务器.pdf 版本控制之道 - 使用Git.pdf Git使用指南(中文).pdf Git-C

Git详解之四 服务器上的Git

来自:http://www.open-open.com/lib/view/open1328069988843.html 服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做,因为一不留心就很容易弄混其他人的进度.另外,你也一定希望合作者们即使在 自己不开机的时候也能从仓库获取数据 — 拥有一个更稳定的公共仓库十分有用.因此,更好的合作方式是建立一个大

Git详解之九 Git内部原理

来自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂.正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己. 既然已

Git详解之九:Git内部原理

Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂.正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己.(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读) 既然已经读到这了,就让我们开始吧.首先要弄明白一点

Git详解之四:服务器上的Git

服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做,因为一不留心就很容易弄混其他人的进度.另外,你也一定希望合作者们即使在 自己不开机的时候也能从仓库获取数据 — 拥有一个更稳定的公共仓库十分有用.因此,更好的合作方式是建立一个大家都可以访问的共享仓库,从那里推送和拉取数据.我们将把这个仓库称为 “Git 服务器”:代理一个 Git 仓库只需要花费