SVN与GIT的区别

Svn 集中式的版本控制
Svn版本控制系统是集中式的数据管理存在一个中央版本库,所有开发人员本地开发使用的代码都来自于版本库,提交代码也都必须提交到这个中央版本库。
Svn版本控制系统工作流程如下:
1.在中央库上传创建或从主干复制一个分支;
2.从中央库check out下这个分支的代码;
3.增加自己的代码文件,修改现在的代码或删除代码文件;
4.commit代码,假设有人在杠杠的分支上提交了代码,你就会被提示代码过期,你得先up(更新)你的代码后再提交。up(更新)代码的时候如果出现冲突,需要解决好冲突后在进行提交。
缺点:
当你无法连接到中央版本库的环境下,你无法提交代码,将代码加入版本控制;
你无法查看代码的历史版本以及版本的变化过程。提交到版本控制系统中的diamante我们要默认通过自测可运行的,如果某个模块的代码比较复杂,不能短时间内实现为可测试的功能,那么你需要等很长时间才能提交自己的代码由于代码库集中管理,因此,需要对中央版本库的存储做备份,这点分布式的 版本控制系统要好一些。Svn的备份要备份所有代码数据以及所有更改的版本记录。


GIT 分布式的版本控制
GIT是由Linux开发的,所以很自然的GIT和Linux文件系统结合的比较紧密。以至于在Windows上你必须使用cywin才能使其完美的工作。
1. GIT中没有了中央版本库的说法,但是为了开发小组的代码共享,我们通常会搭建一个远程GIT仓库;
2. 但是和Svn不同的是,开发者本地也含有一个完整的GIT仓库,从某种角度上说本地仓库和远程的仓库身份上是等价的,没有主从之分。
3. 如果你的项目是闭源项目,或者你习惯于以往的集中式的管理模式的话那么在GIT你也可以像Svn那样的工作,只是流程可能要增加一些步骤:
1. 你本地创建一个GIT库,并将其add到远程GIT库中;
2. 你在本地添加或者删除文件,然后commit,当然commit操作都是提交到本地的GIT库中了(GIT目录下的objects目录中);
3. 将本地GIT库的分支push远程GIT库的分支,如果这时候远程GIT库中已经有别人push过,那么远程GIT将不允许你push,这时候你需要先pull,然后如果有冲突,处理好冲突,commit到本地GIT库后,再push到远程GIT库。
通过上面描述我们可以看到,每个开发人员的本地都会有一个GIT库,我们可以随时进行comit而不需要互联网,可以随时查看历史版本,当某一个功能点开发完了之后我们可将commit后的内容pash到远程GIT库了,如果远程GIT库的版本在你上次clone或者pull之后变化了,那么你需要进行pull并处理冲突,提交之后,再push到远程的GIT库。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章