1. 版本控制工具主要分为集中式和分布式。

(1)集中式版本控制工具

集中式版本控制工具有SVN、CVS、VSS……,其中SVN成为集中式版本控制工具的主流,其原理工作图如图1所示。开发人员(客户端)只能与服务器建立通信,只有服务器才能存储历史文件和版本信息,而客户端就只能保存当前的状态信息,不能存储历史信息。由于这种工作方式,使得集中式版本控制工具主要的缺点就是单点故障,即一旦服务器损坏,所有的历史数据就会丢失。

Git存在的意义

图1 集中式版本控制工具工作流程图

(2)分布式版本控制工具

分布式版本控制工具有Git、Mercurial、Bazaar、Darcs……,其中Git成为分布式版本控制工具的典型代表,其原理工作图如图2所示。相对于集中式,分布式具有以下特点:

①任意客户端可以与其他客户端(当然也包括服务器)进行通信;

②本地存有完整的历史记录,从而很好的避免了单点故障;

③当有一个客户端损坏时,可以从另一个没有被损坏的客户端中建立通信,提取历史数据,恢复之前的状态。

Git存在的意义
图2 分布式版本控制工具工作流程图

  1. Git&GitHub诞生(Linux系统版本控制历史)

Linus,1969年出生,是一位特别喜欢写代码的电脑程序员,从9岁便开始接触电脑写程序代码,这大概是他兴趣所在,而且一写起代码来就不分白天与黑夜。

1991年,Linus本人手动合并代码,创建了Linux系统,但是随着代码的纷繁复杂,使得系统越来越庞大,手动合并代码变得不现实。

2002年,BitMover公司出于人道主义精神,授权Linux社区免费使用这个商业软件BitMover,但是有个要求──Linux社区不能**该软件,但是Linux社区并没有像商业公司对参与开发展进行强有力的约束,。说得通俗点,Linux开源社区就像一个论坛一样,即使违反了规则,顶多被封号,大不了再注册一个账号就行了,又因为该社区集合了大批有能力的程序爱好者,所以Linux社区**该商业软件成为一种必然的趋势。

2005年,开发Samba的Andrew试图**BitKeeper的协议,被BitMover公司发现,要收回免费使用权。因此Linus不得已,自己用C语言开发了Git,主体程序只用了两周,一个月后Linus系统代码由Git管理。

2008年,代码托管中心GitHub上线,很多知名的开源软件,像jQuery、Ruby、PHP等都找GitHub托管,直到现在也十分流行。

其大致的Linux系统版本控制历史如图3所示。
Git存在的意义

图3 Linux系统版本控制历史图

  1. 版本控制工具具备的功能

(1)协同修改:多个开发人员可以并行不悖的修改服务器端的同一个文件,即最后上传到服务器的是多个人修改后的文件,不会被后传者覆盖。

(2)数据备份:不仅保存目录和文件的当前状态,还能保存提交的历史状态。

(3)版本管理:保存每一个版本的文件信息时,一般不保存重复数据,以节约存储空间,提高运行效率。其中,SVN等集中式版本控制工具采用增量式管理,每次保存有修改的部分,然后跟之前的部分拼接起来;Git等分布式版本控制工具则对文件系统采用快照的方式,即每次保存文件系统的快照。

(4)权限控制:能对团队开发人员进行权限控制,比如开发系统的有些部分你只能查看,不能修改;有些部分,你既能查看,也能修改。特别的,Git所独有的权限控制特点是──能对开发团队外的开发者所提供的代码进行审核,从而管理Linux开源社区代码。

(5)历史记录:可以查看修改的所有信息,包括修改人,修改内容,修改时间……

它还能本地文件恢复到某一历史状态。

(6)分支管理:Git的分支管理功能优雅、简洁、流畅,它允许开发团队在工作过程中多条生产线同时推进任务。

  1. Git优势

(1)大部分操作在本地完成,而且不需要联网。

(2)本地保存的是开发的完整历史,主要是通过哈希操作。

(3)库中一般都遵循着一个原则是尽可能地添加数据,而不是删除或修改。

(4)分支操作快捷流畅。

(5)由于是Linus开发的,所以它与Linux命令全面兼容。

相关文章:

  • 2022-12-23
  • 2021-10-19
  • 2021-06-05
  • 2021-11-14
  • 2021-11-10
  • 2022-02-24
  • 2022-12-23
  • 2021-04-23
猜你喜欢
  • 2021-04-29
  • 2021-10-31
  • 2022-12-23
  • 2022-12-23
  • 2021-07-23
  • 2021-06-05
  • 2022-01-01
相关资源
相似解决方案