首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git:关于版本控制

上次我们八卦了大神Linus用2周时间写了世界上最受欢迎的分布式版本控制系统Git. 现在我们来学习一下不同的版本控制系统。

为什么我们需要版本控制系统

这几天一个小学生写的情书刷屏了。 他的电脑桌面应该是这样的:

一封情书改了又改, 那些矫情到感动自己的话, 又舍不得删掉。 所以只好一次次复制整个文件, 在文件名上用时间或者别的文字来提醒自己,这大概是改的第几稿, 有什么说不出口的话保存在这里。。。

我们在编写软件系统时, 常常会遇到这样的问题: 这个BUG是什么时候引入到系统里来的? 新开发的功能目前暂时不想发布,如何同时保存新功能的代码?

几个人同时修改一个文件, 如何合并? 一次提交的修改, 涉及到哪些文件?。等等。。

版本控制系统(VCS)就是来帮助解决这一系列问题的。有了它你就:

可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,

可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。

使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微

VCS就像一个大话西游里的月光宝盒, 更棒的是,你不仅可以回到系统的过去, 还可以随心所欲改变系统的命运。

本地版本控制系统

最简单的是VCS控制系统就在本机。

集中化的版本控制系统

但是现实中的项目往往都是多人协助的结果, 所以需要把版本控制系统放到服务器上, 让多人访问。

集中化的版本控制系统常用的有诸如 CVS、Subversion 以及 Perforce等。 使用很广泛,已成为版本控制系统的标准做法。

不过集中化的版本控制系统从系统架构上有个严重问题, 就是中央服务器的单点故障。 通俗的是就是:鸡蛋不能都放在一个篮子里, 不要在一棵树上吊死等等。设想如果中央服务器宕机, 所有人都没法协作工作了, 而且所有的数据也可能丢失。

于是就有了:

分布式版本控制系统

Git就是分布式版本控制系统。客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。

同时, 因为多个远端代码仓库的存在 (集中化的版本控制系统只有一个),你就可以在同一个项目中,分别和不同工作小组的人相互协作。 这也是Git 大获成功的一个关键原因。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180315G1PEO000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券