Git 分布式与集中式

上一篇提到了Linus非常排斥集中式的版本控制系统,进而才有了Git的出现,我们知道Git是分布式版本控制系统,但具体啥区别,今天呢就跟大家简单聊聊。

 集中式版本控制系统比如CVS(我刚毕业时还用过这个),SVN,而分布式的代表就是Git。


先说集中式版本控制系统,版本库是集中存放在中央服务器的。而对于集中式版本控制,每台电脑都,相当于一台中央服务器,有一套完整的版本库。

简单举个例子吧:

拿前两年比较流行的谍战片来说吧,密码破译员A和B,情报组中心C,这里C就相当于中央服务器,假如A和B随时可以调取最新情报信息,这时候A获得情报,需要交给情报中心,A先从组长那获取最新的信息,如果独立情报,没有冲突直接把最新信息交给C,如果A获取的最新信息与自己的情报有冲突,这时候A和B需要再次验证,确认,最后把信息交给C(而C只想每天要一个进展)。假如有一天突然意外,比如战时的局势变化,情报中心瘫痪了,A和B只是破译情报,而没有其他权利,这时候A和B也就没有办法继续工作下去。这个就是简单的集中式控制方式。

还有一个例子:

前段时间看了《毒枭》这部美剧,美国和哥伦比亚的缉毒局共同抓捕埃斯科瓦尔,共同成立联合小组(其实各有各的小算盘,这里不做讲述)。联合小组就相当于中央服务器,美国和哥伦比亚分别从联合小组获取毒枭信息,然后各自去搜集证据等。双方情报人员都有自己的一套情报小组,这时候的信息基本也都是最新的,美国内部可以独立侦查信息,哥伦比亚也可以。按剧情走向,联合小组矛盾重重,联合小组暂时撤销,这时候各自内部情报中心依然可以正常开展自己的工作,等矛盾解决,双方还是可以共享情报。这就是分布式控制

当然了,例子有点牵强。但从大体意思是否有个简单的认识。

现在就来说说集中式和分布式的区别,就以各自代表SVN和Git来说吧:

1.SVN必须有集中式服务器,如果没有网络,提交肯定是不行了,也不能看到分支情况和历史记录。

2.Git话说是分布式,但实际也有集中式的版本库,我们把代码checkout到本地,其实相当于把版本库的信息都拷贝下来,这时候自己的电脑就相当于一个版本库,可以在自己电脑提交,查看log,查看分支等,及时没有网络,依然可以提交代码,没有问题。

  上述来说就是服务器坏了,对于分布式而言,也没啥大的影响,包括自己的电脑坏了,我们只需要从别的电脑拷贝一份即可

3.对于数据的存储,git是按元数据方式存储内容,而suv是按文件

如何理解呢?在svn方式我们会看到一个.svn,在使用git时,目录里会有.git,    通过对目录体积对比,差距不小,因为.git是克隆在电脑的完整的版本库,里边包含了中心库里的所有信息,标签,分支等信息.

4.git是鼓励建立分支的,svn也有分支,相比较而言,svn分支还是没有git分支那么名声在外。

需要注意的是git是非常建议分支来隔离开发的,就是说代码安全性更有保障。还有使用svn的同学们,强烈建议提交前update代码,每天做好提交代码的准备。养成良好习惯。

当然说了这么多,似乎都在说git的有点,但从唯物论而言,凡事和物都有利与弊,优与缺。git的缺点会在以后博客讲解。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值