Git基础之git与SVN版本控制优缺点区别分析

 更新时间:2022年04月22日 15:46:28   作者:繁华似锦Fighting  
这篇文章主要为大家介绍了Git基础之git与SVN优缺点及区别分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Git和SVN的区别

(1)SVN(集中式版本管理系统)

集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

Subversion属于集中式版本控制系统。

  • 好处:

每个人都可以一定程度上看到项目中的其他人正在做些什么。

而管理员也可以轻松掌控每个开发者的权限。

  • 缺点:

中央服务器的单点故障。若是宕机一小时,那么在这一小时内,谁都无法提交更新、还原、对比等,也就无法协同工作。

如果中央服务器的磁盘发生故障,并且没做过备份或者备份得不够及时的话,还会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,被客户端提取出来的某些快照数据除外,但这样的话依然是个问题,你不能保证所有的数据都已经有人提取出来。

Subversion原理上只关心文件内容的具体差异。每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。

有很多人认为,集中式的版本控制系统在速度上和性能上是不足的。后来基于集中式的版本控制系统的不足,开发了分布式的版本控制系统。

  • Subversion的特点概括

每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据;

获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据;

提交必须有网络连接(非本地版本库);

提交需要授权,如果没有写权限,提交会失败;

提交并非每次都能够成功。如果有其他人先于你提交,会提示“改动基于过时的版本,先更新再提交”… 诸如此类;

冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。

(2)Git(分布式版本管理系统)

如下图所示:

以Git为例:

  • Git是一个分布式的版本控制系统,和集中式的控制系统很大的一个差异是,分布式的版本控制系统的服务端和客户端都有完整的一套版本库。那脱离服务端,客户端照样可以管理版本的。并且查看历史以及版本比较等相关操作,都不需要去访问服务器,也就是说分布式的控制系统比集中式的控制系统更能提高版本管理的效率。
  • Git记录版本历史只关心文件数据的整体是否发生变化,Git 不保存文件内容前后变化的差异数据。
    所以Git每次存的都是项目的完整快照,需要的硬盘空间会相对大一点。
    (Git团队对代码做了极致的压缩,最终需要的实际空间比SVN多不了太多,可是Git的回滚速度极快)。
  • 实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息,并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一个连接。
  • 在分布式版本控制系统中,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。这类系统都可以指定和若干不同的远端代码仓库进行交互。因此,你就可以在同一个项目中,分别和不同工作小组的人相互协作,你可以根据需要设定不同的协作流程。
  • 另外,因为Git在本地磁盘上就保存着所有有关当前项目的历史更新,并且Git中的绝大多数操作都只需要访问本地文件和资源,不用连网,所以处理起来速度飞快。用SVN的话,没有网络或者断开VPN你就无法做任何事情。但用Git的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,等到了有网络的时候再上传到远程的镜像仓库。

2、SVN和Git的优缺点

(1)SVN优缺点

1)优点:

  • 管理方便,逻辑明确,符合一般人思维习惯。
  • 易于管理,集中式服务器更能保证安全性。
  • 代码一致性非常高。
  • 适合开发人数不多的项目开发。

2)缺点:

  • 服务器压力太大,数据库容量暴增。
  • 必须具有网络环境,单机无法实现版本控制。也就是如果不能连接到服务器上,基本上不可以工作,就不能进行提交,还原,对比等等操作。
  • 注意避免中央集中服务器单点故障。
  • 客户机之间无法直接进行联系。
  • 不适合开源开发(开发人数非常非常多)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。

(2)Git优缺点

1)优点:

  • 适合分布式开发,强调个体。
  • 公共服务器压力和数据量都不会太大。
  • 速度快、灵活。
  • 任意两个开发者之间可以很容易的解决冲突。
  • 可以离线工作。

2)缺点:

  • 学习周期相对而言比较长。
  • 不符合常规思维。
  • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

3、总结一下

  • 当研发成本比较低,协作开发人数不多,开发人员对于版本管理的水平参差不齐的时候,或者对于代码的安全性要求更高一点的时候,适合用SVN。
  • 而对于很多人参与开发,代码量比较大,或者高频次协作,跨公司,跨地域合作的情况下,更适合用Git。

参考:https://www.jb51.net/article/245619.htm

以上就是Git基础之git与SVN优缺点及区别分析的详细内容,更多关于git与SVN区别分析的资料请关注脚本之家其它相关文章!

相关文章

  • Runnable.com 在线测试代码片分享网站

    Runnable.com 在线测试代码片分享网站

    Runnable是一个一站式的代码片段集合网站,你不仅可以搜索代码,还可以编辑、运行这些代码片段,以确保它们的正确性与可用性
    2013-12-12
  • 将新型冠状病毒转二进制的代码(首发)

    将新型冠状病毒转二进制的代码(首发)

    这篇文章主要介绍了新型冠状病毒转二进制的相关知识,分为java,js,php,pthon等语言的实例代码,需要的朋友可以参考下
    2020-02-02
  • Keras搭建Efficientdet目标检测平台的实现思路

    Keras搭建Efficientdet目标检测平台的实现思路

    EfficientNet模型具有很独特的特点,这个特点是参考其它优秀神经网络设计出来的,本文以Efficientnet-B0和Efficientdet-D0为例,进行Efficientdet的解析,感兴趣的朋友一起看看吧
    2021-06-06
  • 戏说编码发展史

    戏说编码发展史

    本文从一个风趣的角度详细介绍了计算机编码的发展历史,十分的有趣,小伙伴们仔细研读下吧,了解下相关知识也是非常有必要的。
    2015-01-01
  • bitbucket搭建详细过程记录

    bitbucket搭建详细过程记录

    这篇文章主要介绍了bitbucket搭建详细过程记录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • vscode的几项基本配置详解

    vscode的几项基本配置详解

    VSCode是一款免费的、开源的、高性能的、跨平台的、轻量级的代码编辑器,这篇文章主要介绍了vscode的几项基本配置,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2020-05-05
  • MobaXterm的安装和使用及问题小结

    MobaXterm的安装和使用及问题小结

    MobaXterm是一款全能的终端连接工具,支持SSH连接,支持FTP、串口等协议。接下来通过本文给大家分享MobaXterm的安装和使用及遇到的问题解决方法,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • Emscripten在Windows10下的安装和配置

    Emscripten在Windows10下的安装和配置

    这篇文章主要介绍了Emscripten在Windows10下的安装和配置,Emscripten 是一个完整的 WebAssembly开源编译器工具链,使用Emscripten可以参考平台说明,感兴趣的朋友一起看看吧
    2022-05-05
  • ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境的详细教程

    ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境的详细教程

    这篇文章主要介绍了ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • WebStorm 发布2021.3重大更新新功能介绍

    WebStorm 发布2021.3重大更新新功能介绍

    ​2021年度最后一次重大更新WebStorm 2021.3来了!此更新充满了期待已久的增强功能,包括对远程开发的支持、改进的 HTML 完成、重新设计的 Deno 集成等
    2021-12-12

最新评论