版本控制系统概述

最近再次认真学习下 Git,参照《Pro Git》中文版和网易云课堂的 Git 教程,写下学习笔记,也当是做个记录,以便日后可以参阅。

版本控制系统 VCS(version control system),是一种记录若干文件变化,以便将来查阅特定版本修改记录的系统。对于编程开发人员来说,我们常使用版本控制系统来对程序源代码进行版本管理。但实际上,我们可以对任何类型的文件进行版本控制。

根据版本控制系统的实现方式,我们可以对版本控制系统划分为以下几种类型:

  • 本地版本控制系统
  • 集中式版本控制系统
  • 分布式版本控制系统

本地版本控制系统

在没有使用版本控制系统之前,许多人习惯用文件名标识的方式来对不同版本的文件进行管理。例如,对于如下文件的版本管理:

foo.txt -> foo-修订版.txt -> foo-最终版.txt -> foo-最终版-1.txt -> foo-绝对不改版.txt -> …

这么做的好处是简单,不过却容易混淆不同文件之间的区别,最终只能通过手工对比文件的差别来辨别不同的文件。
为了解决这个问题,人们开发了本地版本控制系统,大多都是采用某种简单的本地数据库来记录文件的历次更新差异。例如图 1。
一个流行的本地版本控制系统叫做 RCS

这里写图片描述
图 1:本地版本控制系统

集中式版本控制系统

本地版本控制系统的一个问题是,多个人如何进行协同工作?因为所有文件提交的记录都在提交者本地的计算机,他人无法获取文件最新状态。于是,集中式的版本控制系统出现了。
这类版本控制系统,都有一个单一的集中管理的版本控制管理服务器,保存所有文件的修改版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新后的文件。

这里写图片描述
图2:集中式版本控制系统

集中式的版本控制系统,可以允许多个人协同工作,每个人都可以看到其他人的修改记录。但是集中式版本控制系统最大的一个问题是版本服务器的单点故障问题。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也无法从服务器获取最新的文件。最坏的情况是,如果服务器的硬盘发生故障,并且没有做过备份或者备份不及时,还会有丢失数据的风险。

分布式版本控制系统

分布式版本控制系统的特点是客户端并不只提取最新版本的文件快照,而是把原始的代码仓库镜像完整地提取下来。这样一来,当版本控制服务器发生故障,事后可以用本地计算机的任何一个代码仓库镜像来恢复。因为每一次的撮操作,实际上都是对代码仓库的完整备份,见图 3。

这里写图片描述
图 3:分布式版本控制系统

另外,由于大部提交的操作都是在本地进行而不需要经过服务器,因为提交的速度也更加快。
现在非常流行的 Git,就是一种分布式版本控制系统。

参考资料

  1. Git Pro, https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
  2. Java Web开发第五章 Git, 郑海波, 网易云课堂
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值