Git前世今生-版本控制软件的发展
版本控制软件发展至今已有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前世今生-版本控制软件的发展相关推荐
- 【22/03】为什么要学git分布式版本控制软件及基本操作
碎碎念: 虽然说每次创建github仓库再push就几句命令,但是总是忘,于是整理了一下,理解记忆每条命令的含义,和清晰化流程很重要!!!!但最重要的就是我们为什么要学, 为什么要用, 这样在我们自己 ...
- Git分布式版本控制系统简介和使用
Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1] Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本 ...
- Git分布式版本工具的部署与使用
一.Git概述 1. Git诞生 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linu ...
- 使用Git分布式版本控制系统
GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理 ...
- lsul2014控制软件_2014年的版本控制软件:您有什么选择?
lsul2014控制软件 Imagine software that creates checkpoints in your work and allows you to go back to tho ...
- Git分布式版本控制系统(上)
Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...
- Git分布式版本控制系统
Git分布式版本控制系统 git remote -v 查看仓库 一 企业高效持续集成平台场景介绍: 二,GIT分布式版本控制系统: 2.1 Git简介: 2.1.1 git是什么? Git在Wikip ...
- Git 分布式版本控制系统使用教程
Git 专栏索引: Git 分布式版本控制系统使用教程 在 IDEA 中使用 Git 图文教程 Git 分布式版本操作系统使用教程 1. 版本控制系统简介 1.1 集中式版本控制系统 1.2 分布式版 ...
- Git 分布式版本控制系统
目录 文章目录 目录 Git 分布式版本控制系统 Git 的基本概念 Git 的仓库结构 Git 的核心对象 Git 的数据结构 Git Flow 参考文档 Git 分布式版本控制系统 Git 是一个 ...
最新文章
- 禁止validateRequest的办法
- JSONP的实现原理
- ASP.NET MVC 5 - 将数据从控制器传递给视图
- java mvc 分页查询条件_java分页条件查询-GridManager.js表格插件+Pageable分页对象+mybatis pagehelper分页插件...
- WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent
- 伟大公司为什么需要技术型领导?
- 今天的虎兄才跳了过去的飞秋WZ132
- 让IE支持HTML5
- 李航《统计学习方法》SMO算法推导中的思考
- ASP.NET统计图表控件
- 《嵌入式 Linux C 语言应用程序设计(修订版)》——2.1 嵌入式Linux下C语言概述...
- 正则Regex中圆括号()方括号[]大括号{}的区别和用法
- 如何批量PDF转换JPG
- C语言波形实现三角波和正弦波
- 手机上将mp4转换成amv_如何在Linux上将所有文本从大写转换为小写?
- matlab newton插值法,matlab中newton插值法
- OK6410A 之 SPI 驱动 测试 步骤
- 双动道岔计算机控制系统,车站信号自动控制习题.doc
- x64dbg 实现插件Socket反向通信
- 计算机用户组命令,组策略命令大全