SVN和Git的功能和区别,尚学堂SVN和Git学习视频…

2018-06-18 00:27:47来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

对于软件开发人员来说,版本控制系统再熟悉不过了,所谓版本控制系统就是软件项目开发过程中用于储存开发人员所写代码所有修订版本的软件。目前常见的版本控制系统分为集中式版本控制系统(SVN)和分布式版本控制系统(GIT)两种。

图1 SVN与Git

这两天逛论坛,发现了一个很好玩儿的事儿,一个发表于2015年的关于SVN和GIT孰好孰坏的帖子,一直到今天仍然有人在留言,并且辩论真的是异常的激烈火爆。

关于这两者谁优谁劣,我们综合网上的一些资料做了一个整理,大家看一看发表下自己的观点吧。

 

1、SVN 的主要功能

SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器。

SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。SVN大都采用图形界面操作,直观,上手快。

图2 SVN主要功能

 

2、Git的主要功能

Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch ,merge ,push,rebase,Git擅长的是程序代码的版本化管理。

 

3、SVN与Git的主要区别

1)、Git 只关心文件数据的整体是否发生变化,而SVN这类版本控制系统则只关心文件内容的具体差异。这类系统(如SVN)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,然而Git 并不保存这些前后变化的差异数据。实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。Git 并没有像 SVN一样在每一次提交的时候都将更新的详细信息都分析并提交,这是很科学的,因为我们有90%的时候不会闲着要查看每一个文件都做了哪些更新,特别是模块化开发时,那些不是我们开发的模块,因为Git 会在本地保存完整的历史版本库,有十个用户共同开发就会有十份这样的库,这样做的话会会出现非常多冗余的数据。但是在SVN 上这样还是科学的,因为只有SVN 服务器上保存着唯一的一份历史版本库,当然是越详细越好了。但是当遇到那10%的时候,我们想要查看一下某个文件的与昨天的版本相比的更新变动信息,Git 会取出一天前的快照和当前文件作一次差异运算,显示出更新变动信息。

2)、在Git 中的绝大多数操作都只需要访问本地文件和资源,不必联网就可以看到所有的历史版本记录,而SVN 却需要联网。因为 Git 在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快,但我们需要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来,而直接从本地数据库读取后展示给你看。如果想要看当前版本的文件和一个月前的版本之间有何差异,Git 会取出一个月前的快照和当前文件作一次差异运算。

3)、SVN 断开网络或者断开VPN就无法commit代码,但是Git 可以先commit到本地仓库。用SVN的话,没有网络或者断开VPN时,你当然也可以继续在本地开发,但是无法commit代码,因为SVN 每次commit都必须联网,长时间不commit代码会丢失大量开发进程的历史纪录。有个比喻是:不能commit就像用word写文档不能save一样危险。而且有网络的情况下每一次commit都会花上数秒甚至更长时间。但用 Git 的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,因为是在本地仓库commit所以几乎不需要时间,而且commit一定要频繁,不然无法记录你的改动,如果你一天commit一次,中间的修改你就找不回来,然后等到了有网络的时候再将版本纪录和代码一起上传到远程仓库。

4)、Git 的内容完整性要优于SVN。因为Git 在commit(存储在本地)或者push(上传到远程仓库)之前,通过对文件的内容或目录的结构计算出一个 SHA-1哈希值,作为指纹字符串进行内容的校验,并将此结果作为数据的唯一标识和索引,在远处仓库接受到commit的文件之后,会再计算一遍哈希值然后跟传递过来的哈希值做比较,如果不一致,说明文件在传输时变得不完整,或者磁盘损坏导致文件数据损坏。另外在 Git 数据库中的东西都是用此哈希值来作索引,而不是靠文件名。

5)、Git 克隆一个完整项目的速度非常快,SVN 非常慢。我们以克隆一份拥有五个分支的完整项目以及版本库来说,SVN是同时复制5个版本的文件,也就是说重复五次同样的动作。而Git 只是获取文件的每个版本的元素,然后只载入主要的分支(master)在我的经验,克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件的 SVN,耗了将近一个小时!而Git只用了区区的1分钟。

6)、其中最重要的区别是在于Git 上的分支远比SVN上的强大。

 

4、学习线路图及视频

● SVN-安装【尚学堂百战程序员】

● SVN-创建资源库【尚学堂百战程序员】

● SVN-上传项目【尚学堂百战程序员】

● SVN-项目管理【尚学堂百战程序员】

● Git-环境搭建【尚学堂百战程序员】

● Git-提交文件管理【尚学堂百战程序员】

● Git-回退与前进【尚学堂百战程序员】

● Git-分支【尚学堂百战程序员】

● Git-解决冲突【尚学堂百战程序员】

● Git-上传【尚学堂百战程序员】

● Git-码云管理代码【尚学堂百战程序员】

。。。。。。

 

下载方式:

口号:SVN与Git学习视频 Mrs.单 一五贰零一八④壹贰⑧肆

上海尚学堂Java培训编辑整理,参考文章https://blog.csdn.net/hellow__world/article/details/72529022

 

感谢阅读,欢迎评论关注

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:java判断类型

下一篇:java中获取系统的当前时间