在上一篇中我们说到:Git 是由 Linux 之父 Linus Tovalds 创建的分布式版本控制系统。那么,什么是版本控制呢?
版本控制(Version control)最主要的功能是追踪文件的变更,它将什么时候、什么人更改了文件的什么内容等信息忠实地记录下来。
你的个人电脑上可能曾经也出现过这样的场景:
这篇论文我死也不改了!
你需要修改最初的论文版本,但又怕因为修改错误而破坏它,所以在每次修改时都将新的文档另存一份,且保留之前的论文版本。这样「复制-修改-备份」的方式就是一个简单的本地版本控制系统。
本地版本控制系统
本地版本控制容易犯错,也只适合一个人玩得不亦乐乎,如果需要多人协作,又该如何处理呢?
为了让不同计算机上的开发者协同工作,集中式版本控制系统(Centralized Version Control Systems,CVCS)应运而生。
集中式版本控制系统都有一个中央服务器,用于集中存放版本库。多人协作时,每个人都需要连接到这台服务器,才能拉取文件或提交更新。
集中式版本控制系统
与本地版本控制系统相比较,集中式版本控制系统:
但它依然存在缺点:过分依赖中央服务器。中央服务器一旦宕机,就无法协同工作,中央服务器上的数据一旦丢失,所有历史变更都将灰飞烟灭。
分布式版本控制系统(Distributed Version Control System,DVCS)解决了集中式版本控制系统的问题。Git 就是分布式版本控制系统的代表。
分布式版本控制系统
在分布式版本控制系统中,每个协作者都拥有整个代码仓库的完整镜像。这样一来,代码库的管理(提交、回溯、合并等)都可以在本地进行。
与集中式版本控制相比,分布式版本控制的优点有:
这些优点正是 Git 大行其道的原因。
除此之外,分布式版本控制还支持各式各样的协作流程,我们将在接下来的章节中一一道来。