浅谈SVN与Git

浅谈SVN与Git

SVN与GIT是两种常用的版本控制器。(版本控制:对软件开发过程中各种程序代码,配置文件及说明文档等文件变更管理,其主要功能为追踪文件的变更。)

一、SVN

SVN(subversion)经常应用于多人开发一个项目,实现资源共享和集中式管理。SVN采用客户端/服务器体系。
SVN的服务器端会记住项目的每一次变动,这就使项目的各种版本都能存储在服务器上,从而可以将项目恢复到旧的版本,也可以查看项目变动的历史。
SVN的客户端分为基于Web的WebSVN等和以TortioseSVN为代表的客户端软件。SVN存储版本数据分为BDB(需要数据库)和FSFSC(不需要数据库的文件方式)
浅谈SVN与Git_第1张图片以档案馆为例,可以将档案馆当做服务器,工作员当做成员。档案馆有档案1.0,工作员A,B,C等可以得到档案1.0的复制版。成员A通过修改档案1.0的复制版得到档案2.0(比如需要重修排版),然后将档案2.0交给档案馆,档案馆存入档案2.0,将1.0入库。其他成员可以得到新的档案版本,同时如果档案2.0没有添加一些重要信息,比如没有添加作者信息,那么档案馆也可以恢复档案1.0。

二、Git

其他版本控制系统通过文件存储数据,而Git把数据看作是小型文件系统的一系列快照(快照可以是数据的一个副本,也可以是数据的复制品),当开发者改变项目状态时,Git就会对当时的全部文件创建一个快照并保存改快照的索引。如果文件没有修改,Git不会重新存储该文件,只是保留指向原文件的索引。

Git的绝大多数操作只需要访问本地文件和资源。如果开发者要浏览项目的历史,Git无需连接服务器获得历史,只需直接从本地数据库读取。这就意味着当开发者处于离线状态时也可以进行操作,完成操作后提交到本地(本地是指从服务器上克隆完整的Git仓库到单机上。),直到有网络连接时再上传。

简而言之对于分布式开发(普通开发者,主开发者,公共服务器):

普通开发者会从服务器上克隆完整的Git仓库到单机上,在单机上根据不同的开发目的创建分支,修改代码。开发者拿到服务器上最新的代码与自己的分支合成并生成补丁发送给主开发者。发生冲突时主开发者可以自行解决,也可以要求普通开发者之间解决冲突。解决冲突后主开发者回向公共服务器提交补丁并通知所有开发者。浅谈SVN与Git_第2张图片如有问题,欢迎讨论。

你可能感兴趣的:(java,其他)