为什么需要版本控制系统
在一个产品或项目的开发过程中,随着时间的推进,会对产品进行不断的修改或者增加新的功能,这样就产生了许多的版本,随着版本的迭代,迫切需要一个工具对这些版本进行有效地管理。版本控制系统可以分为3种,分别是本地版本控制、集中式版本控制和分布式版本控制。
本地版本控制
顾名思义,就是在自己的电脑上进行版本的控制和管理,例如我们从论文的初稿到发表稿,会更改许多轮次,每一次修改都会形成一份新的版本,我们对这些版本在本地进行保存和管理。很明显,这种模式只适用于单人的开发,不需要服务器,但对于多人协同开发就无能为力了。
集中式版本控制系统
集中式版本控制的实现代表是SVN,它的核心思想是建立一个中央服务器,里面存储着所有版本,其他开发者计算机上没有存储所有版本,更新版本时需与中央服务器交互,上传或下载代码。
集中式版本控制因其版本只放在中央服务器,相对较为安全,发生代码泄露的可能性降低,不会因为离职把整个代码都带走的情况。但是由于其所有版本都放在中央服务器那一台电脑上,一旦中央服务器出故障,整个系统都将崩溃,所以这种模式的容错率较低。
分布式版本控制系统
分布式版本控制系统的代表是Git,与集中式版本控制系统不同,分布式版本控制系统在所有开发者电脑上都存放完整的版本。
从图中可以看出,除了中央服务器,每台主机上也都存放着所有版本,若中央服务器出故障了,各个主机也还是可以正常工作。