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区别分析的资料请关注脚本之家其它相关文章!

相关文章

  • 使用 tke-autoscaling-placeholder 实现秒级弹性伸缩的方法

    使用 tke-autoscaling-placeholder 实现秒级弹性伸缩的方法

    这篇文章主要介绍了使用 tke-autoscaling-placeholder 实现秒级弹性伸缩的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • VSCode配置Lua开发环境的实现示例

    VSCode配置Lua开发环境的实现示例

    本文主要介绍了VSCode配置Lua开发环境的实现示例,主要包括下载及配置环境,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 前端vscode必备插件推荐(开发必备)

    前端vscode必备插件推荐(开发必备)

    VSCode是我们前端开发的一个强大的IDE,因此选择趁手好用的插件能事半功倍,也能能更好地编码以及获得更丝滑的开发体验,这篇文章主要给大家介绍了关于前端vscode必备插件推荐的相关资料,需要的朋友可以参考下
    2023-11-11
  • IE条件语句 IE hack大全

    IE条件语句 IE hack大全

    条件注释只有在IE浏览器被支持,因此仅适用于IE的特殊指令。从IE5起都支持
    2012-05-05
  • 轻量级思维导图XMind 2023免费激活教程

    轻量级思维导图XMind 2023免费激活教程

    这篇文章主要介绍了轻量级思维导图XMind 2023免费激活教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 打造博客园(cnblogs)超级自定义界面

    打造博客园(cnblogs)超级自定义界面

    有部分网友提出想了解一下像我这样的高度订制化博客界面是如何做出来的。所以在这里给大家分享一下经验。
    2009-12-12
  • 完美解决浏览器Flash插件过期不能用问题

    完美解决浏览器Flash插件过期不能用问题

    这篇文章主要介绍了完美解决浏览器Flash插件过期不能用问题
    2021-02-02
  • 通过Cursor使用chatgpt-4的ai辅助编程工具的方法

    通过Cursor使用chatgpt-4的ai辅助编程工具的方法

    cursor是一款与openai合作的,使用gpt-4的一款编程工具,它可以让你通过gpt-4进行辅助编程,以此提高效率,这篇文章主要介绍了Cursor一个使用chatgpt-4的ai辅助编程工具,需要的朋友可以参考下
    2023-05-05
  • 图像检索之IF-IDF,RootSift,VLAD

    图像检索之IF-IDF,RootSift,VLAD

    TF-IDF是一种用于信息检索的常用加权技术,在文本检索中,用以评估词语对于一个文件数据库中的其中一份文件的重要程度,本文给大家介绍下图像检索之IF-IDF,RootSift,VLAD的相关知识,感兴趣的朋友一起看看吧
    2021-12-12
  • 一看就懂的IDEA编辑器 .http教程详解

    一看就懂的IDEA编辑器 .http教程详解

    这篇文章主要介绍了一看就懂的IDEA编辑器 .http教程详解,本文以PHPStorm的ide作为例子的讲解,需要的朋友可以参考下
    2020-11-11

最新评论