版本控制软件发展至今已有40多年的历史。

最早的版本控制软件是1972年由Marc J. Rochkind开发的SCCS (Source Code Control System),通过将不同版本下的文件单独保存的形式完成,将同一版本的所有文件打包保存。SCCS使用了长达10年的时间,直到1982年RCS的问世。

1982年,Walter F.Tichy 发布了RCS (Revision Control System),提供了较SCCS更多的功能,并作为GNU项目的一部分。

1986年创建的CVS也是一款使用时间长,范围广的版本控制软件。但其并不记录文件的更名,移动,并且CVS的commit操作并不支持原子(atomic)操作,这也带来了一定的安全隐患。其定义的branching模型一直沿用到后面的版本控制软件中。2008年5月,CVS的停止开发。

2000伊始,Subversion (SVN)作为CVS的替代品问世,其几乎全面兼容CVS。2009年11月,Subversion被Apapche社区接受,目前由该社区进行开发维护。SVN提供了真正的atomic commits,增强了鲁棒性。同时,其提供了对文件的追踪,可以记录下文件在历史上的的改名,移动操作。使用SVN,可以轻松实现http下的版本控制,非常方便的进行branching,以及原生支持二进制文件的版本管理。

但SVN也存在着一些不足:SVN提出了一种tagging的模型(一个tag实际就是一个branch)进行版本控制,对文件系统以快照的形式保存,导致了虽然其本身的branching过程比较简单,但在客户端操作较为耗时。并且,SVN并不记录历史信息,无法进行diff操作。

接下来,便到了GIt出场的时候。Git的出现或许也是巧合,这源于BitMover停止提供免费的版本控***务。Linux Kernel的开发起初都是在BitMover公司的一套专利系统,BitKeeper,进行的,同时BitKeeper还支持着几个其他的开源软件的开发。由于合作一直进行,社区中的程序员起初并没有想过要自己开发一个版本控制软件。但2005年BitKeeper终止了与开源社区的合作协议,并支付了赔偿金(关于这部分还有很多有趣的争论,感兴趣的可以去看看BitKeeper and Linux: The end of the road?)。于是Linus等人根据在BitKeeper上的使用经验,开始着手开发自己的版本控制系统,

Git的最重要的功能在于其分布式的设计,这也是第一个分布式的版本控制软件,提供了客户端轻量级的维护。GIt的开发于2005年4月开始, 主要由Junio Hamano负责,于12月发布了1.0版本。这里是Git的开发仓库。目前,Github和BitBucket都提供了免费的Git服务。

与以往不同,Git强调了非线性的开发,具体体现在其方便的branch和merge功能。同时,使用Git进行版本控制速度快,尤其表现在大型软件的开发方面。

Git的缺点表现在其学习曲线,要想完全掌握Git的特性并不容易。另一方面,Git并不会记录空目录,这也是一些人抱怨的原因。

几乎与此同一时间的,Mercurial也是一个很成功的版本控制软件,拥有着与Git相同的目的。目前BitBucket提供了免费的Mercurial系统。

转载于:https://blog.51cto.com/drmaxwell/1409342

Git前世今生-版本控制软件的发展相关推荐

  1. 【22/03】为什么要学git分布式版本控制软件及基本操作

    碎碎念: 虽然说每次创建github仓库再push就几句命令,但是总是忘,于是整理了一下,理解记忆每条命令的含义,和清晰化流程很重要!!!!但最重要的就是我们为什么要学, 为什么要用, 这样在我们自己 ...

  2. Git分布式版本控制系统简介和使用

    Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1] Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本 ...

  3. Git分布式版本工具的部署与使用

    一.Git概述 1. Git诞生 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linu ...

  4. 使用Git分布式版本控制系统

    GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理 ...

  5. lsul2014控制软件_2014年的版本控制软件:您有什么选择?

    lsul2014控制软件 Imagine software that creates checkpoints in your work and allows you to go back to tho ...

  6. Git分布式版本控制系统(上)

    Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  7. Git分布式版本控制系统

    Git分布式版本控制系统 git remote -v 查看仓库 一 企业高效持续集成平台场景介绍: 二,GIT分布式版本控制系统: 2.1 Git简介: 2.1.1 git是什么? Git在Wikip ...

  8. Git 分布式版本控制系统使用教程

    Git 专栏索引: Git 分布式版本控制系统使用教程 在 IDEA 中使用 Git 图文教程 Git 分布式版本操作系统使用教程 1. 版本控制系统简介 1.1 集中式版本控制系统 1.2 分布式版 ...

  9. Git 分布式版本控制系统

    目录 文章目录 目录 Git 分布式版本控制系统 Git 的基本概念 Git 的仓库结构 Git 的核心对象 Git 的数据结构 Git Flow 参考文档 Git 分布式版本控制系统 Git 是一个 ...

最新文章

  1. 禁止validateRequest的办法
  2. JSONP的实现原理
  3. ASP.NET MVC 5 - 将数据从控制器传递给视图
  4. java mvc 分页查询条件_java分页条件查询-GridManager.js表格插件+Pageable分页对象+mybatis pagehelper分页插件...
  5. WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent
  6. 伟大公司为什么需要技术型领导?
  7. 今天的虎兄才跳了过去的飞秋WZ132
  8. 让IE支持HTML5
  9. 李航《统计学习方法》SMO算法推导中的思考
  10. ASP.NET统计图表控件
  11. 《嵌入式 Linux C 语言应用程序设计(修订版)》——2.1 嵌入式Linux下C语言概述...
  12. 正则Regex中圆括号()方括号[]大括号{}的区别和用法
  13. 如何批量PDF转换JPG
  14. C语言波形实现三角波和正弦波
  15. 手机上将mp4转换成amv_如何在Linux上将所有文本从大写转换为小写?
  16. matlab newton插值法,matlab中newton插值法
  17. OK6410A 之 SPI 驱动 测试 步骤
  18. 双动道岔计算机控制系统,车站信号自动控制习题.doc
  19. x64dbg 实现插件Socket反向通信
  20. 计算机用户组命令,组策略命令大全

热门文章

  1. 11连胜!绝艺横扫中美日韩对手,称霸围棋AI世界大战
  2. 何小鹏总结2017:小鹏汽车融资近50亿,上市车型下月亮相CES
  3. 神经网络是怎样理解图片的?谷歌大脑研究员详解特征可视化
  4. 过程、性能基线、性能模型与目标之间的关系
  5. AOP面向切面编程 淘宝京东网络处理
  6. Ipmi 远程管理工具
  7. 安装CleanMyMac 3提示软件已损坏
  8. PHP框架Yii系列教程(四):使用Memcache保存会话
  9. set 和 vector的简单比较
  10. SharePoint创建登录表单