Git是什么
Git是用来做版本控制的,这就好比很多日本公司现在还在做的事情一样。每次修改文件都需要在文件第一页新增修改履历,详细记录修改内容,以此维护版本修改记录。但如果是多人同时操作,就会发生很多并发问题。可以想象一下,这种做法的维护成本有多高,大量的时间都花费在履历的维护上,同时每次还只能是一个人进行操作。因此,高效的版本控制永远是项目开发的重中之重。
那么问题来了,版本控制哪家强?一句话就可以说明,Git是目前世界上最先进的分布式版本控制系统(没有之一),当然把“分布式”三个字去掉也是同样成立的。
目前市面上的版本控制工具,主要为集中式的版本控制工具和分布式的版本控制工具两种。
集中式版本控制
作为最方便易懂的版本控制方式,集中式的控制最早出现在开发界,它的使用方式与人的合作方式非常类似,即大家都去操作一份文件,如果有人占用则等待。集中式的版本控制工具以SVN为代表,它有一个中央服务器控制着所有的版本管理,其他所有的终端可以对这个中央库进行操作,中央库保证版本的唯一性。
但这样做有一个非常不好的地方,那就是如果中央服务器因为各种原因被毁,那么整个项目的版本控制就完蛋了。而且在使用过程中,终端不论是提交修改还是获取更新都需要不断与服务器进行通信,一旦网络出现故障,一切就很难再继续操作。
因此,集中式的版本控制工具的劣势如下。
- 容灾性差
- 通信频繁
当然,这两个劣势并不是就完全否定了集中式的版本控制工具。只能说在合适的场景下,集中式的版本控制工具也是可以使用的,只是没有分布式的版本控制工具好而已。
分布式版本控制
分布式版本控制的典型就是Git,它跟集中式的最大区别就是它的终端可以获取到中央服务器的完整信息,就好像做了一个完整的镜像。这样我们可以在终端做各种操作,获取各种信息而不需要与服务器通信。同时就算服务器出现问题被毁,各个终端依然有完整的备份,而且Git的各种操作可以全部发生在本地,只需要最终完成后提交服务器即可,而不需要频繁通信。
分布式的思路在版本控制上具有得天独厚的优势,当然这也只是Git优势的冰山一角。
Git核心思想
学习Git最好的方式就是忘记SVN、VSS等版本控制工具的控制思想。Git作为分布式的版本控制工具,其核心在于以下几个方面。
- 分布式。各个Repo都具有完整的镜像,虽然在协作中通常会指定一台中心服务器,但分布式的思想是Git的第一个重要概念。
- 快照。相比SVN,Git每次记录的都是完整的Repo信息,而不是每个版本之间的差异,这也是Git速度快的原因之一。
- 状态区。了解Git的状态区是学习Git的重要步骤,只有掌握了不同状态区中的状态,才能了解Git的核心思想。
- 分支。分支是Git最重要的功能之一,利用好分支可以让Git的使用如虎添翼。
开发者在了解Git的时候,需要始终围绕着这几个方面进行思考,这样才能对Git的思想有比较好的理解。
