首页 > 其他分享 >Git和SVN的对比

Git和SVN的对比

时间:2024-03-25 19:11:27浏览次数:24  
标签:SVN Git 代码 版本 服务器 对比 分支

差异

安全性

SVN:较差,定期备份,并且是整个SVN都得备份。Git:较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息。

 

权限管理

SVN:SVN的权限管理相当严格,可以按组、个人针对某个子目录的权限控制,每个目录下都会有个.SVN的隐藏文件。Git:Git没有严格的权限管理控制,只有账号角色划分。但Git可以通过分支合并时的审查策略来勉强绕过此问题。

 

仓储大小

SVN代码全记录在服务器中,Git每份仓库clone都拥有代码的全记录,意味着对于SVN而言,服务器的才是全的,你下载下来的可以小一点。而对于Git,你下下来的,和服务器上的是一样的。所以使用SVN,会减少各开发机的物理空间占用。不过这不一定意味着传输时间的减少,因为Git是自带压缩传输的,而SVN没有。

 

分支(branch)的使用范围不一样

Git中,你只能针对整个仓库作branch,而且一旦删除,便无法恢复。而SVN中,branch可以针对任何子目录,它本质上是一个拷贝操作。所以,可以建立非常多、层次性的branch,并且,在不需要时将其删除,而以后需要时只要checkout老的SVN版本就可以了。

 

局部更新,局部还原

SVN由于是在每个文件夹建立一个.svn文件夹来实现管理,所以可以很简单实现局部更新或者还原。假如你只希望更新某些部分,则SVN可以很好实现。同时代码写错了,同时可以很好实现局部还原,当然Git也可以通过历史版本还原,但是无法简单地实现局部还原。

 

对比可以看出:分布式版本管理仅仅是增加了本地库这个概念,其余的概念与集中管理并无区别。SVN在与服务器同步之前无法提交代码,因而本地修改更容易出问题。

 

SVN与Git的区别

  1. Git是分布式的,而SVN是集中式的;
  2. Git把内容按元数据方式存储,而SVN是按文件:因为Git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等;
  3. Git分支和SVN的分支不同:SVN会发生分支遗漏的情况,而Git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件;
  4. Git没有一个全局的版本号,而SVN有;
  5. Git的内容完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

 

SVN的优点

  1. 采用集中式,易于管理,保证安全性;
  2. 管理方便,逻辑明确,理念符合常规思维;
  3. 代码的一致性高;
  4. 适合人数不多的项目开发;
  5. 允许一个文件有任意多的可命名属性,会关注所有的文件类型;
  6. 支持二进制文件,更容易处理大文件;
  7. 支持空目录。

 

SVN的缺点

  1. 服务器压力太大,数据库容量暴增;
  2. 必须连接在服务器上(时刻都得联网操作),否则基本不能工作、提交、对比、还原等;
  3. 不适合开源开发。

 

Git的优点

  1. 适合分布式开发,强调个体;
  2. 公共的服务器压力和数量都不会太大;
  3. 速度快,成熟的架构,开发灵活;
  4. 任意两个开发者之间可以很容易的解决冲突;
  5. 离线工作,管理代码成本低,不需要依赖服务器;
  6. 部署方便,基本上下个命令就可以用;
  7. 良好的分支机制,可以让主干代码保持干净。

 

Git的缺点

  1. 学习成本比较大,学习周期比较长,要求人员素质比较高;
  2. 不符合常规思维;
  3. 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

扫码关注公众号,查看更多精彩内容

标签:SVN,Git,代码,版本,服务器,对比,分支
From: https://www.cnblogs.com/bobbycheng/p/18095106

相关文章

  • Typora结合PicGo + Github搭建个人图床
    目录一、GitHub仓库设置1、新建仓库2、创建Token并复制保存二、PicGo客户端配置1、下载&安装2、配置图床三、Typora配置一、GitHub仓库设置1、新建仓库点击主页右上角的+号创建 Newrepository填写仓库信息2、创建Token并复制保存点击右上角用户头像......
  • 连接未来:电口模块与PON模块的全面对比
    在探索电口模块和PON模块的区别时,我们不仅要考虑它们的技术规格和应用场景,还要理解它们在现代网络通信中的独特地位。本文将详细分析电口模块的特点,并与PON模块进行对比,以突出电口模块在网络通信中的重要性。电口模块:局域网的高效连接者电口模块,也称为电气接口模块,是网络设备......
  • git rebase详解(图解+最简单示例,一次就懂)
    引言网上有太多讲rebase和merge的文章,但大多都是复制粘贴没有自己的理解,而且很多博客的例子写的过于复杂,让人没兴趣看下去。根据奥卡姆剃刀原则,本文举最简单例子,大白话几句就让你快速掌握rebase的核心原理和用法。本博客将持续修订更新,看完如果还是有疑问,可以评论区留言,我解释到......
  • gitlab 集成runner
    要在CentOS上安装GitLabRunner,可以按照以下步骤进行操作:添加GitLabRunner软件仓库:首先,需要添加GitLabRunner的软件仓库。打开终端并执行以下命令:curl-Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh|sudobash安......
  • 如何极狐GitLab Runner 使用特权身份运行
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。本文主要讲述了如何使用极狐GitLabRunner使用特权身份运行。问题安......
  • linux下git的两种配置
    一账号密码设置 1.在~/下,touch创建文件.git-credentials,用vim编辑此文件,输入内容格式:touch.git-credentialsvim.git-credentials在里面按“i”然后输入: https://{username}:{password}@github.com 比如https://account:[email protected].在终端下执行git......
  • 【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真
    操作环境:MATLAB2022a1、算法描述"4ASK"是一种数字调制技术,代表4级振幅移移键控(4-LevelAmplitudeShiftKeying)调制。它是一种数字通信中常用的调制方式之一,用于将数字信号转换为模拟信号以便传输,或者将模拟信号转换为数字信号以便处理。在4ASK调制中,每个数字比特被映射......
  • 当使用git出现提示untracked files时怎么办?
    当使用git出现提示untrackedfiles时怎么办?背景介绍:在使用git工具时,遇到如下错误。报错内容:$gitstatusOnbranchmasterNocommitsyetUntrackedfiles:(use"gitadd..."toincludeinwhatwillbecommitted)docs/nothingaddedtocommitbutuntrac......
  • 5个主流跨端框架及区别对比
    最近前端届多端框架频出,相信很多有代码多端运行需求的开发者都会产生一些疑惑:这些框架都有什么优缺点?到底应该用哪个?作为Taro开发团队一员,笔者想在本文尽量站在一个客观公正的角度去评价各个框架的选型和优劣。但宥于利益相关,本文的观点很可能是带有偏向性的,大家可以带着批判......
  • git安装与常用命令的使用
    1.git介绍Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。LinusTorvalds为了帮助管理Linux内核开发而开发了Git,作为替代BitKeeper的过渡方案。Git的主要特点如下:分布式:与传统的集中式版本控制系统不同,Git是一种分布式系......