Git与SVN最全面详细对比

git 专栏收录该内容
5 篇文章 0 订阅

概念

Git(分布式版本控制系统)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
分布式与集中式
二者最重要最核心的区别Git是分布式的,而SVN是集中式的。注意Git并不是目前唯一的分布式版本控制系统,还有比如Mercurial等。其实Git可以跟Svn一样采用集中式工作流(详情参考http://blog.jobbole.com/76847/),但Git更倾向于分布式开发。
  • 每一个开发人员的电脑上都有一个本地仓库,所以即使没有网络也一样可以Commit到本地仓库,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。而SVN断开网络虽然可以继续开发敲代码,但是无法Commit代码,这也是Git当前如此受欢迎的一个原因。
  • SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。而对于Git 而言,如果主要版本库(例如:GitHub的版本库)发生了什麼事,工作成员仍然可以在自己的本地版本库(local repository)提交到本地仓库,等待主要版本库恢复即可,并且工作成员也可以提交到其他的版本库!
  • 在Git 中的绝大多数操作都只需要访问本地文件和资源,不必联网就可以看到所有的历史版本记录,而SVN 却需要联网。因为 Git 在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快,但我们需要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来,而直接从本地数据库读取后展示给你看。如果想要看当前版本的文件和一个月前的版本之间有何差异,Git 会取出一个月前的快照和当前文件作一次差异运算。
二者存储方式不同

Git将所有的对象都以SHA-1值为索引用gzip格式压缩存储, 每个对象都包含了对象类型, 大小和内容。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。

版本号

Git没有一个全局版本号,而SVN有。

分支

分支功能应该是Git相比SVN最大的一个优势了,Git上的分支十分强大。SVN中,分支是一个完整的目录。且这个目录拥有完整的实际文件。如果工作成员想要开放新的分支,那将会影响整个项目!每个人都会拥有和你一样的分支。如果你的分支是用来进行破坏工作,那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载,十分不方便。而 Git中,每个工作成员可以任意在自己的本地版本库开放无限个分支。举例:当我想尝试破坏自己的程序,并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可,十分方便。并且Git可以在任何一个提交点开启分支以及随意命名。

权限控制

SVN 可以严格控制每个目录的访问权限(还有一套很变态的规则),git 只能控制每个仓库分支的权限。SVN 可以 checkout 任意子目录,而 git 只能 clone 某个分支。

实际上,SVN的目录权限控制和 checkout 子目录主要是为了方便了基于trunk+-branches+-tags 结构的开发。现在 git 既然已经有了好用的分支功能,目录权限控制就没有那么必要了。


总结:Git本地的.git文件是从服务器上克隆完整的Git仓库(包括代码和版本信息),方便开发。

    Git速度快、灵活,任意两个开发者之间可以很容易的解决冲突。

   代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息,相比之下SVN安全性更高。

        经过上面的讲解可以看出Git的操作比较复杂,学习较难以及使用稍复杂一些,SVN就简单多了。

        我们应该根据不同的应用场合选择合适的版本控制工具,切勿盲目的跟风。


  参考文章:http://blog.csdn.net/hellow__world/article/details/72529022

                           https://www.jianshu.com/p/bfec042349ca

                           百度百科




  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值