集中式vs分布式


Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。

微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。

分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

转载于:https://www.cnblogs.com/markleilei/p/4620825.html

git简介 http://msysgit.github.io/相关推荐

  1. Git简介以及与SVN的区别

    Git是由著名Linux内核(Kernel)开发者Linus Torvalds为了便利维护Linux而开发的. Git是一个分布式的版本控制系统.作为一个分布式的版本控制系统,在Git中并不存在主库这 ...

  2. hexo提交报错 unable to access ‘https://github.com/*/*.github.io.git/‘: Couldn‘t resolve host ‘github.com

    title: >- hexo提交报错 unable to access 'https://github.com//.github.io.git/': Couldn't resolve host ...

  3. 采取HEXO+NexT主题+github.io的方式建立自己的个人主页

    采取HEXO+NexT主题+github.io的方式建立自己的个人主页 主要知识点 注册github帐号,建立io仓库. 本地配置HEXO博客. 克隆NexT主题到本地仓库 建立本地博客与github ...

  4. [Git]Git教程之msysgit(命令行形式)

    步骤一:在GitHub新建托管项目 1-1. 要托管到github,那你就应该要有一个属于你自己的github帐号 github官网:https://github.com/ 在地址栏输入地址:gith ...

  5. git入门(msysgit安装)

    1.下载git-for-windows 常用的GitHub客户端msysgit,也就是git-for-windows. 登录官网 https://git-for-windows.github.io/, ...

  6. git入门(msysgit图文安装)

    1.下载git-for-windows     (1)常用的GitHub客户端msysgit,也就是git-for-windows. (2)登录官网 https://git-for-windows.g ...

  7. 【GitHub.io/Github Pages使用教程】从头开始搭建自己的Github Pages,打造个人博客网站,展示个人简历、项目、文档或想要与世界共享的任何其他内容

    巨人半边莲 如果你曾征服乞力马扎罗山,留意过海拔 3,657-4,267 米处的尖顶植物,这种植物有时形似绿色大柱子(或'花序'),从中间长出花序. 那么你就可能看到许多巨人半边莲,这些植物生长在非洲 ...

  8. git简介、安装、基本操作——Git折腾小记

    这两天刚完成了一个小项目,整理资料发现现在写代码跟文档又没有版本控制的意识,刚好前两天电脑出问题,差点所有代码跟文档全丢掉,所以这两天又在自己的台式机上架起了git,做所谓的代码服务器,之前折腾过一次 ...

  9. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...

最新文章

  1. 自动创建阿里云抢占式实例
  2. vaniglia 源码学习 (六)
  3. The Majesty Of Vue.js
  4. HDU - 3605 Escape(二分图多重匹配-网络流最大流+思维建边+状态压缩)
  5. SpringBoot部署项目到Docker仓库
  6. ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别
  7. 中文纠错(Chinese Spelling Correct)最新技术方案总结
  8. 你的努力终将被光芒环绕
  9. js 改变this指向的几种方法(个人学习笔记)
  10. Linux安装日文语言包,以及,TeraTerm显示乱码问题 的 解决
  11. 2021年电工(初级)考试试卷及电工(初级)考试平台
  12. tspl 重置打印机命令_打印机取消任务命令
  13. Incorrect string value: '\xE5\xA4\xA7\xE5\xB9\x85...' for column' name' at row 1的解决方法
  14. 每日一学18——凉鞋的简易有限状态机
  15. Redis配置文件redis.conf文件详解
  16. 内嵌式js微信扫码登录及自定义样式
  17. 心跳包机制及Socket通信服务的心跳包
  18. Linux新加硬盘挂载
  19. 044-Web前端-JS-键盘事件
  20. 什么才是软件定义汽车?

热门文章

  1. 【EF Code First】 一对一、一对多的多重关系配置
  2. jquery内核学习(6)--扩展实现extend
  3. 奖牌分配/Median Pyramid Hard
  4. 骑芯供应链(T 面试)
  5. HTML-参考手册: HTML 颜色名
  6. JAVA记录-Servlet RequestDispatcher请求转发
  7. 小程序添加动画效果--遇到的问题
  8. 20155327《Java程序设计》第二周学习总结
  9. 分布式缓存DistributedCache的使用
  10. Ubuntu 使用记录