从今天开始,我们学习一下分布式版本控制系统Git的相关内容。在了解Git之前,我们先来对版本控制系统做一个宏观的介绍。
什么是版本控制
版本控制是指通过对文件内容的变化进行记录,并为每次的变化进行编号,以便将来查阅文件的修订情况。有了版本控制之后,就可以比较文件变化的细节,以便将某个文件回溯到之前某个时间点的状态,从而解决由于文件变化过程中出现的怪异问题。
版本控制到目前为止的相关产品有很多,大致可以分为三类,分别是本地版本控制系统、集中式版本控制系统和分布式版本控制系统。
本地版本控制系统
本地版本控制系统出现之前,很多人为了保存不同版本的文件,通常是通过改名病添加时间戳的方式来区别不同的版本文件,这种方式非常简单,同时这种方式也非常容易造成文件混乱。所以很早就有人开发了许多种本地版本控制系统,其原理也非常简单,即使用一个简单的数据库记录文件的每次变更。其原理示意图如下所示:
集中式版本控制系统
相对与本地版本控制系统,集中式版本控制系统解决了本地版本控制系统仅在单个的操作系统之上运行的缺陷,实现了在不同的操作系统之上运行,这就给开发者之间进行团队合作提供了条件。集中式版本控制系统的原理非常与本地版本控制系统的原理类似,所不同的是集中式版本管理系统有一个单一的集中管理的服务器,该服务器可以保存所有的文件修改版本信息,参与团队开发的客户端连接这台服务器之后,就可以提交更新和去除最新的文件。其原理示意图如下所示:
分布式版本控制系统
尽管集中式版本控制系统已经能够满足大部分的需求,但由于集中式版本控制系统本身就存在单点故障问题,即如果中央服务器宕机或发生故障,那么各个客户端将无法正常工作。分布式版本控制系统的工作原理在于客户端并不只提取各个客户端上的最新版本的文件,而是把中央服务器上的代码仓库完整地镜像下来。这样,当中央服务器发生故障之后,就可以利用任何一个客户端的本地仓库进行中央仓库的恢复。因为每一次的提取操作,就是对中央服务器仓库的完整备份。其原理示意图如下所示:
三种类型的版本控制系统介绍就到这里,这里重点了解三者之间的联系和发展过程中出现问题和解决方案。接下来我们会继续讲解Git的其他内容。
Git实战(一)版本控制概述