一.任务
git 协议 主要四种
* 本地协议
* SSH 协议 同时支持读写操作的网络协议
* Git 协议 网络协议 只读 不能写操作
* HTTP 协议 :(不在服务器端运行Git) 网络协议 只读 不能写操作
本地协议
最基本的就是本地协议 常见于团队每一个成员都对一个共享的文件系统拥有访问权
,或者比较少见的多人共用同一台电脑的情况
如果你使用一个共享的文件系统,就可以在一个本地文件系统中克隆仓库,推送和获取。
克隆的时候只需要将远程仓库的路径作为 URL 使用,比如下面这样:
$ git clone /opt/git/project.git
$ git clone file:///opt/git/project.git
要添加一个本地仓库作为现有 Git 项目的远程仓库,可以这样做:
$ git remote add local_proj /opt/git/project.git
然后就可以向这个远程仓库推送和获取数据了
优点:
同时保留了现存文件的权限和网络访问权限 (大家都在意见屋子里办事,没有中间
商赚差价 就是比较方便 想看别人的直接在库里面看了)
应用前提:全体共享的文件系统。
也就是有一个共享系统,把裸仓库的副本放在
大家都能访问的地方,如果特殊需要就就像对西塔共享目录一样设置权限
缺点:
基于网络连接的访问相比更加困难和缓慢。(如果我在家里面想推一个文件还需要先挂载一个远程硬盘)
该方法不一定就是最快的,尤其是对于共享挂载的文件系统
(本地仓库只有在你对数据访问速度快的时候才快)
SSH 协议 (唯一一个同时支持读写操作的网络协议)
最常见的传输协议
大多数环境已经支持通过 SSH 对服务器的访问,
没有的话,架设起来也简单
优点:
架设相对简单
很多操作系统都自带了它或者相关的管理工具
访问安全 (所有数据传输都是加密和授权的)
在传输之前尽可能压缩数据
缺点: (受限制于访问主机的限制)
不能通过 SSH 协议实现仓库的匿名访问
不利于开源项目 (必须先通过 SSH 访问主机,再进行读写操作)
如果想允许对项目的匿名只读访问,那么除了为自己推送而架设 SSH 协议之外
,还需要支持其他协议以便他人访问读取。
Git 协议
由于没有授权机制,。要么所有人都能克隆 Git 仓库,要么谁也不能。
包含在Git 软件包中的特殊守护进程,
它会监听一个提供类似于SSH 服务的特殊端口(9418),无需任何授权.
打算支持 Git 协议的仓库,需要先创建
git-export-daemon-ok 文件
优点:
现存最快的传输协议
(当有一个对读操作进行授权的庞大项目,架设一个Git 守护进程提供仓库是不错的选择)
与 SSH 协议数据传输机制相同,但省去了加密和授权的开销
缺点:
缺少授权机制
用 Git 协议作为访问项目的方法一般是,同时提供SSH 接口,
让几个开发者拥有推送(写)权限,其他人通过 git:// 拥有只读权限
Git 协议可能也是最难架设的协议
该协议还要求防火墙开放 9418 端口,而企业级防火墙一般不允许对这个非标准端口的访问
HTTP/s 协议
HTTP 或 HTTPS 协议的优美之处在于架设的简便性
此后,每个能访问 Git 仓库所在服务器上 web 服务的人都可以进行克隆操作.
下面的操作可以允许通过 HTTP 对仓库进行读取:
$ cd /var/www/htdocs/
$ git clone --bare /path/to/git_project gitproject.git
$ cd gitproject.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
这条命令在你用 SSH 向仓库推送内容时运行;之后,其他人就可以用下面的命令来克隆仓库:
$ git clone http://example.com/gitproject.git
优点:
HTTP 协议的好处是易于架设
HTTP 协议不会占用过多服务器资源
通过 HTTPS 提供只读的仓库,可以加密传输内容
HTTP 还有个额外的好处:HTTP 是一个如此常见的协议,以至于企业级防火墙通常都允许其端口的通信。
缺点:
说客户端效率更低
HTTP 传输的体积和网络开销比其他任何一个协议都大
因为它没有按需供应的能力 — 传输过程中没有服务端的动态计算 — 因而 HTTP 协议经常会被称为傻瓜(dumb)协议
五.总结
ProGit的学习上,效率有些慢,现阶段打算调整学习方法,
计划:
对于时间管理方面,有点没有调理
还有学习任务顺序上的排布并不是特别合理
打算改变学习方法,投入更多的专注力,
边学习边写技术博客,不然晚上写日报的时候,
一是写不出来东西,二是有些影响心情
计划方面就这么多
终端输入git 出来的那些关键词开始看
还有progit 第三章 分支
学习情况:
关于git 的四种协议已经有了初步认识,理解详情以上参考