美文网首页
29_版本控制SVN和Git的区别

29_版本控制SVN和Git的区别

作者: Android_小生 | 来源:发表于2017-10-12 16:09 被阅读77次
    SVN VS Git

    SVN

    SVN 作为一个开源的版本控制系统,管理着碎时间改变的数据,这些数据放置在一个中央资料档案库(repository)中。这个档案库就像一个普通的文件服务器,它会记住每次文件的变动。我们可以浏览文件的变动历史,把当前版本的文件恢复到旧的版本。

    SVN 集中式协同模型

    集中式代码管理的核心是服务器,所有的版本信息都放在服务器上,因此受到网络的限制。所有开发者在开始一天的工作前都要从服务器获取最新版本的代码,然后进行开发,再提交代码,解决冲突。

    Git

    Git 是一款开源的分布式版本控制系统,可以敏捷高效的处理或大或小的项目。 分布式和 SVN 等集中式的最大区别在于每个开发人员从中心版本库/服务器上 check out 代码后会在自己的机器上克隆一个自己的版本库。这样在没有网络的情况下在本地也可以进行开发,代码管理。

    Git 分布式模型

    Git 的一些功能特性:

    • 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上;
    • 在自己的机器上根据不同的开发目的,创建分支,修改代码;
    • 在单机上自己创建的分支上提交代码;
    • 在单机上合并分支;
    • 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并;
    • 生成补丁(patch),把补丁发送给主开发者;
      ......

    Git 是一个系统,相当于一个工具,而 Github 就是基于这样一个系统的平台,让开发者更高效地使用 Git 去托管自己的代码。

    Git 与 SVN 区别

    1. Git 是分布式的,SVN 是集中式的。好处是跟其他同事不会有太多冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以在不用联网在本地提交。

    2. Git 把内容按元数据方式存储,而 SVN 是按文件。所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把 .git 目录的体积大小跟 .svn 比较,你会发现它们差距很大。因为, .git 目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

    3. Git 分支和 SVN 的分支不同。分支在 SVN 中一点不特别,就是版本库中的另外的一个目录。而 Git 可以从同一个工作目录下快速的在几个分支间切换。

    4. Git 没有一个全局的版本号,而 SVN 有。SVN 里容易阅读的数字版本号,它实际是任何一个相应时间的源代码快照。

    5. Git 的内容完整性要优于 SVN。Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

    SVN 和 Git 的适用性

    SVN 更适用于项目管理, Git 仅适用于代码管理。一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN 能清楚的按目录进行分类管理,使项目组的管理处于有序高效的状态。

    参考文章
    项目管理Git与SVN
    Git和SVN之间的五个基本区别

    注,文章只作为个人知识整理,学习使用。如有违规可随时@我,谢谢。

    相关文章

      网友评论

          本文标题:29_版本控制SVN和Git的区别

          本文链接:https://www.haomeiwen.com/subject/bdibyxtx.html