SVN与Git
两种常用版本控制器,对软件开发过程中,各种程序代码,配置文件,以及说明文档等文件变更管理,主要功能为追踪文件的变更。
本篇文章对原文进行了一些删减,有两个图没有上,看原文请链接到原创地方。
SVN
SVN经常用于多人开发一个项目,实现资源共享,和集中管理。采用C(Client)/S(Server)架构,即客户端/服务器架构。
SVN的服务器端会记住项目的每一次变动,这就使项目的各种版本都能存储在服务器上,从而可以将项目恢复到旧的版本,也可以查看项目变动的历史。
SVN的客户端分为基于Web的WebSVN等和以TortioseSVN为代表的客户端软件。SVN存储版本数据分为BDB(需要数据库)和FSFSC(不需要数据库的文件方式)
Git
相比于其他版本控制系统通过文件存储数据,而Git把数据看作是小型文件系统的一系列快照(快照可以是数据的一个副本,也可以是数据的复制品),当开发者改变项目状态,Git就会对当时的全部文件,创建一个快照并保存快照改快照的索引。如果文件没有修改,Git不会重新存储该文件,只是保留指向原文件的索引。
Git绝大多数操作,访问本地文件和资源。若要浏览项目历史,无需连接服务器,只需从本地数据库读取。即开发者离线状态亦可进行操作,之后提交到本地。
对于分布式开发(普通开发者,主开发者,公共服务器)
普通开发者从服务器克隆Git仓库到单机,在单机上根据不同开发目的创建分支,修改代码。开发者拿到服务器上最新代码+自己的分支=合成补丁发送给主开发者。
发生冲突时,主开发者既可以自行解决,也可以选择让普通开发者之间解决冲突。
解决冲突后,主开发者向公共服务器提交补丁并通知所有开发者。