前言
对于文件编辑,有个版本控制系统可以避免文件修改偏差,亦可以有一个回溯的机会。对于软件开发,更是需要一个专门的工具来管理代码,才能保障大量的代码修改得到有效管理。Git无疑是一个很好的工具。
一、版本控制系统
1.1 什么是版本控制系统
版本控制系统是一种文件各个版本变化内容的,以便查阅或者溯源的系统,一般具有历史记录查看,制定版本恢复等功能。
常见的如SVN,Git等都是,甚至用excel记录的文件变更记录也是。。
1.2 本地版本控制系统
本地版本控制系统就是将文件的变更信息保存到本地系统中。
基础的是将自己的不同版本进行重命名,改上不同的日期、版本或者备注信息,就是有个版本系统了。但是这样容易混淆,一不小心就有可能误删,覆盖意料之外的文件。
再进一步,自己用word或者excel记录的文件变更记录,然后将不同版本统一保存。这样处理可以避免文件的混乱,但是仍然无法避免误删,覆盖的问题。
后面开始有人开发本地版本控制系统。将文件变更差异记录到数据库中,然后需要的时候检出,示意图如下。
1.3 集中化的版本控制系统
本地版本控制系统,存在无法进行不同系统协作开发的问题。
集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。通过将文件版本信息保存到统一的一个服务器上来进行管理,然后不同人员通过客户端连接到服务器进行文档的修改。系统管理员亦可以进行权限控制,不同用户的管理等。
如 CVS、Subversion 以及 Perforce 等。
客户端通过网络访问服务器中的文件管理系统,本地仅保存当前版本。实现了文件的写作开发。
但是由于文件版本全部存储与服务器中,依赖于互联网进行访问,当服务宕机或者网络故障时,将无法进行提交或者获取版本信息等记录。
1.3 分布式版本控制系统
为了解决集中式版本控制系统依赖于网络的问题,分布式版本控制系统(Distributed Version Control System,简称 DVCS)横空出世。版本记录区分本地仓库和远程仓库。客户端将整个版本库完整的镜像下载到本地,这样子,即使式互联网或者服务器有故障,都可以通过任何一个本地仓库进行恢复。
每一个库都是一个完整的备份,这样需要暂用较多的内存控件,不过可操作性就很多,甚至可以做到多分子,多代码交互。