第一章中说Git是一款分布式版本控制工具,那么什么是分布式呢?
既然有分布式版本控制,就肯定有集中式版本控制。集中式版本控制是一种将所有版本数据集中储存在中央服务器的版本控制系统,在这种系统中,所有的开发者都需要通过中央服务器进行数据的同步,修改和提交,其典型代表是CVS,SVN。其工作原理如下图:
在这种控制方式下,所有的开发者都要从中央服务器获取版本,更改之后,再次上传中央服务器,供接下来的开发者更改。从这个过程中我们不难总结出集中式版本控制的优点就是对开发者的权限管理方便,因为所有人都是从同一个地方(中央服务器)获取的代码,可以由企业的管理员统一对某个程序员的权限进行管理;另外一个优点就是版本冲突的可能性减小了,因为所有开发者都是对同一版本进行工作。
但是它也有它的缺点:1.网络依赖性强,所有的开发者必须在联网的条件下工作,不然会影响版本的提交和同步;2.最大的缺点就是单点故障,中央服务器的单点故障会导致所有开发者无法提交更新,影响团队的进度,对中央服务器的依赖性极高。
而分布式版本控制则在一定程度上避免了单点故障,分布式版本控制的工作原理如下图:
在分布式版本控制系统中,每个开发者都可以将完整的代码库复制到本地,相当于每个开发者都有自己的副本,可以在没有网络的情况下工作,在本地修改和提交代码,然后推送到其他开发者的本地副本上,每个开发者在不同的分支上工作。分布式的优点就是灵活性,可拓展性,独立性高,当然缺点就是安全性,数据一致性较低,并且难以管理。
Git的工作机制如图所示:
开发者可以从远程库中克隆(clone)出想要的代码到本地库中,也可以直接从远程库中拉取(pull命令)数据到工作区,然后在本地工作区进行代码的编写,代码编写完之后通过add命令将当前版本添加到暂存区,从暂存区提交(commit命令)到本地库,然后在本地库中推送(push命令)到远程库,远程库类似集中式的中央服务器,但是远程库几乎不会出问题,稳定性极高。不同开发者是在不同的分支工作,他们的代码推送到远程库后可以合并,而且各自的代码版本不会消失,以方便随时回溯。
当代码添加到暂存区之后任然可以删除,但是一旦提交本地库就很难删除,因为在本地库中生成了历史版本,而删除历史版本,容易造成版本的混乱和数据丢失,但是对于新提交到本地库的版本可以选择撤回提交,方法在后面的章节再介绍,如果推送到远程库将无法删除,当然唯一的办法就是删库,但是这个方法造成的损失就得自己承担了,所以极其不推荐。
本章介绍了分布式和集中式的区别以及Git的工作原理,多分支,版本回溯,灵活性等是Git的强大之处。今天就到这里了,谢谢大家!下一章将介绍Git的常用命令。
因篇幅问题不能全部显示,请点此查看更多更全内容