车视界_车视界报价大全
车视界主页 > 行业 > 正文 >

什么是Git?版本控制的历史起源

2020-11-09 16:12:24 来源:互联网 阅读:12

使用GIT作为源代码管理工具可以说是所有程序开发者的一个重要且基本的技能。GIT能够帮助你管理项目代码,更快地查找和修复bugs,也令你和其他开发者的协助变得更加简单,即便他们不是和你在同一个办公室。

最近我会写一系列的文章去分享如何使用Git,而为了令你对Git产生兴趣。今天这篇文章会刨根问底,通过类比不同类型的版本控制应用和穿越版本控制系统的起源,务求让你对Git留下一个好印象。

什么是Git?版本控制的历史起源

什么是Git?

Git是一个可以追踪你的文件和目录变化的软件。而且它尤其擅长追踪文字的修改。想象一下,你有一个文档,从版本1开始修改到了版本2,然后又做了一些修改,到了版本3.。Git可以记录这些修改的版本,允许你向前或向后跳转到不同的版本,并且比较不同版本之间有什么区别。所以Git是一个“版本控制系统”,或者简称VCS。当然Git不是唯一一个也不是第一个版本控制系统。但所有的版本控制系统只有一个主要目的,就是管理源代码。如果你写过毕业论文,你很可能经历过一些修改论文的痛苦,当你以为这是最终稿而在后面添加final的后缀,却发现还有问题,所以你称下一个非版本是final-final,最后不知道迭代到第几个版本才定稿。

实际上很多应用软件甚至会提供一些类似VCS的功能,例如Microsoft Word就可以追踪你文档的改动,只要你启用track change的功能,发送给某人,然后某人修改的文档并发送回给你,你就可以review他的编辑,也可以看到原来的版本。

Adobe Photoshop也有一个功能叫history,你可以打开history面板,看看你对图片所做的修改,然后向前或向后应用或去除修改。

如果你也用过维基百科,那你肯定也用过了版本控制功能了。当有人想添加内容到Wiki页面,小编有权限回滚这些内容,回到之前的版本,如果有需要。

当然,我们所有人都用过的最简单的版本控制,就是windows的CTRL+z或Mac的Cmd+z了。它会撤销一些我们之前的输入或修改。甚至可以撤销多次的修改。

这些都是版本控制一些很基础的应用例子。虽然它们都无法取代真正的版本控制系统,例如Git。不过通过这些例子,我想在你脑海里面对版本控制一定有了更具体的感受吧。

他们都是跟踪和查看不同时间的更改的例子,并且可以使你撤销或重做历史的修改。这也是我们使用gift最主要的原因。

版本控制的历史

这里我想聊一下,除了Git以外历史上其他的版本控制系统。通过他们,我想也能够让你更好的了解gift。

首先第一个叫做SCCS。全称是Source Code Control System,源代码控制系统。是1972年由AT&T开发并发布的。并且免费搭载在Unix操作系统上。随着Unix的流行广泛地传播开来。最开始多数大学会教学生怎么通过SCCS来做版本控制,随着学生的毕业,SCCS在职场上也开始流行起来。SCCS可以说是最原始的版本控制系统。它设计初衷主要是为了解决这样的问题,试想一下,当你有一个最原始的文件,然后修改了它形成了版本二,接下来是版本三,版本四。每次修改你都要给文档起一个新名字作为区分。于是乎你就保存了很多份完整的,但有部分不同的文档。这当然不是一种有效率的做法。而SCCS怎么做呢?它会保存原始的文档,但同时不会重复保存整份文档。而只是保存被修改地方的一个快照。假设你的一个文档有第5个版本,你只需要为第1个版本应用4组修改快照,你就可以得到版本5的文档。这样只存储修改的效率更高。这个模式令SCCS一直保持着统治的地位。直到80年代初,RCS被研发出来。

RCS全称是Revision Control System。直译就是修订控制系统。它基于SCCS做了很多改进。首先它是跨平台的,而SCCS只支持Unix。随着个人电脑的兴起在PC电脑上面使用版本控制也变得非常重要。而且RCS的语法更简单,命令更少却有更多的功能。而且由于它有更好的存储效率,所以储存修改速率也更快。这是因为RCS有更好的存储策略。相对于SCCS会存储一个文件所有的修改。RCS会保留最近的整个文件,而当你想恢复到前一个版本,那你只需要应用一个修改的回滚就可以了,但是SCCS则需要从第一个版本一直应用修改到n-1个版本,才能退回前一个版本。

但是SCCS还有RCS都有一个相同的问题,就是同一时间只允许你在一个文件上面工作。所以你只能够在一个文件上面追踪修改,而不是一系列或者整个项目的文件里面追踪修改。

但是CVS, Concurrent Versions System却可以。不过CVS最大的革新并不只是让你在多个文件上面工作。它的Concurrent(并发)的含义要更丰富。它使得我们能够有一个地方存储所有人的代码,这个地方叫做代码仓库。如果你把它放在一个远程服务器,那就可以有多个用户在同一份文件上面做工作,就是所谓的并发地工作。而以前一个人只能在一份文件上面做修改。所以cvs增加了很多功能,使得用户能够分享他们的工作,并且能够和其他人一起更新所有的文件。

远程仓库的思路很快被Apache的SVN沿用并且作出了改进。SVN不单单比CVS更快,而且它还能够存储非文字文件,就像图片。SVN最大的贡献是它不仅仅能够追踪一个或一组文件。事实上它能够监控整个目录的状态。并且为整个目录打一个快照。所以SVN的快照不仅仅包括文件,它还包括整个目录的里面所有的修改。

CVS和SVN统治了版本控制市场很长一段时间。但是后来出现了一个虽然不太流行但是影响却十分深远的系统,BitKeeper SCM。它是一个闭源并且有产权的代码管理工具。这意味着它属于一个公司并且不是免费的。而它当中有一个非常重要的功能,就是它是distributed version control,分布式版本控制。在说什么是分布式版本控制之前,先说一下BitKeeper的community 版本,这个版本本来是免费的,而且在2002到2005正式Linux kernel的代码仓库。可以到了2005年四月,BitKeeper的社区版本开始收费了。而也正在差不多这个时间点Git面世了。

Git的开发者叫做Linus Torvalds,通过名字我想你也意识到了,正是他开发出以他名字命名的Linux。

什么是Git?版本控制的历史起源

Linus

当BitKeeper 不再免费,他们需要一个可选的工具去管理他们的源代码。Linus发现他身边并没有这样的工具。他想要像BitKeeper这样,甚至更好的功能,所以他从零开始写了一套新的版本控制系统,那就是GIT了。像BitKeeper一样,Git也是是一个分布式版本控制系统,而且它是开源并且免费的。这也就意味着你和我都能够免费的下载安装并且使用它,也不需要任何的证书费用。而开源也就意味着社区能够看到它的源代码,并且不断完善它。他们能够提交bug fixes,增加新功能,所有的这些优势,都是因为它是一个开源项目。

而且它兼容很多的平台如Linux,MAC和windows。另外它比大多数其它的开的代码管理工具要快。随着这些改进GIT变得非常火。到底有多火呢?我虽然没有正式的统计数据,但我可以给你一个例子。Git Hub是在2008年成立的,作为Git的源代码仓库,在2009年有5万个代码仓库和10万用户,在2011年也就是两年之后Git Hub上已经有200万个仓库,还有超过100万的用户。到了2019微软收购了它,而当时已经有5700万个仓库,还有超过5800万的用户。

什么是Git?版本控制的历史起源

好了,这就是关于版本控制仓库的诞生历史了,为了讲解Git,做出这么长的铺垫也挺不容易的,但是通过这些不同阶段出现的版本控制工具,我想你也慢慢开始了解版本控制的一些设计思路,或者说是核心价值。而Git则可以说是它们的集大成者。在下一篇文章我将会讲一下本文所埋下的一个伏笔,也是Git非常重要的一个功能,分布式版本控制。

欢迎点赞评论关注,让我知道你们有所期待哦。


推荐阅读:叶紫