Git&SVN区别及选型

这篇具有很好参考价值的文章主要介绍了Git&SVN区别及选型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、结论先行

  • git更适用于纯代码仓库,优势在于分支管理
  • svn则擅长于文件管理,优势在于目录级权限控制

2、版本管理发展历程

git svn,svn,git

3、Git&SVN为何而生

Git出生于2005年,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
分布式版本控制系统

Subversionchus出生于2000年,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。

4、Git&SVN五大区别

  1. 连接:集中式与分布式
  2. 储存:文件与元数据
  3. 分支:简单分支与多分支
  4. 版本号:顺序编号与hash值
  5. 完整性:部分保存与全保存

4.1、区别一:GIT是支持分布式的,SVN不是

git svn,svn,git
特点:Git中每一位用户都保存一份副本,包括历史记录
Git支持本地提交,svn必须连接服务器
Git支持用户间使用Patch 补丁包协作

  • 优点:两者之间版本控制方式不同,Git可以不断签出合并,可以无中心协作
  • 缺点:浪费资源(如二进制文件),Git无法做到像SVN的权限控制(细分到某文件夹)

4.2、区别二:GIT按元数据存储、SVN是按文件(重点)

git svn,svn,git

  • Git:整体控制
  • SVN:文件控制

svn可以只签出一个文件,但Git一次签出就是整个仓库,如果项目很大,对个人pc要求会很高。Git不利于大文件的版本控制,比如上G的图纸。

Git每一次提交都以全部文件作为一个整体存为快照(id),而SVN则以改变过的文件为标记。

  • SVN使用数据库中revision字段记录文件更改次数(即每一次的修改记录)

git svn,svn,git

  • Git将保存版本中所有文件的hash值作为一个版本id(回滚时也只需回滚到某id,所以服务器端回滚是很快的)

git svn,svn,git
切换到分支版本时,svn需要将分支版本文件复制一遍,而Git只需要将仓库版本id复制一遍,所以Git的分支管理比svn六得多


4.3、区别三:GIT分支和SVN的分支不同

svn的分支仅仅是目录的一个版本复制,git则可以多重分支并行
Git分支仅仅是将head复制一份,而SVN则将所有文件复制一份

  • 优点:分支切换方便
  • 缺点:Git学习成本高(复杂),如merge和rebase

这是在代码管理上git比svn强大的原因

4.4、区别四:GIT没有一个全局的版本号,而SVN有

SVN提交的版本以顺序编号,git以hash值编号

Git 中每个克隆(clone)的版本库都是平等的。可以从任何一个版本库的克隆来创建属于自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。

Svn版本号只能增加
git svn,svn,git
git可以任意切换
git svn,svn,git

4.5、区别五:GIT的内容完整性要优于SVN

  1. GIT在内容存储时,同时储存了文件的hash值,一旦受到外部破坏,只要能匹配到hash值就能确定文件是否完整
  2. 深层,尚未理解

5、Git命令简介

git svn,svn,git

  1. Workspace:工作区
  2. Index / Stage:暂存区
  3. Repository:仓库区(本地仓库)
  4. Remote:远程仓库

6、Git四种状态

git svn,svn,git

  1. 未跟踪(Untracked):此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged
  2. 已提交(committed/ Unmodify):提交到本地仓库后的状态,切换分支时不会丢失
  3. 已修改(modified):修改中或修改后未做任何动作,分分钟会丢失
  4. 已暂存(staged):下一次commit会提交

7、Git缺点

1、 安全管理能力不足:SVN的安全控制和权限管理更好,git的分布式特性导致无法做到读控制,而对安全性要求较高的组织完全无法使用这种形式(硬用也可以,管理成本很高)
2、 学习成本高:git 有一定的学习成本,分布式的工作方式,需要转换思维方式,如签出某一文件夹,svn很容易而git较为复杂,而且pull的时候需要
3、 资源浪费:git适合文本存储(设计原意本是管理Linux代码),git因为都是镜像, 如果研发上传一个pcb图, 不相关的人员也要去下载, 很浪费流量和更新时间
4、 版本库只能做整体管理:每一次提交都包含所有文件(但如果仅作为查看使用,可以fetch部分)

8、Git应用场景

  1. 纯代码项目,多分支协作
  2. 小团队,权限不做特殊控制
  3. 可跟踪性要求不高

个人观点:Git、SVN无所谓优劣,适用场景不同而已,适合的才是最好的文章来源地址https://www.toymoban.com/news/detail-754543.html

到了这里,关于Git&SVN区别及选型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 版本控制-Git/SVN

    1. Git 是一个免费开源的分布式版本控制系统 2. Git 易于学习,占地面积小,性能极快,具有廉价的本地库,方便的暂存区域和多个工作流分支等特性 3. Git 性能优于 Subversion(SVN) , CVS 等版本控制工具 1.版本控制是一种记录工作内容变化,以便将来查阅特定版本修订情况的系统

    2024年02月08日
    浏览(18)
  • SVN/Git指令管理

    远程控制屏幕/屏幕共享IP地址 常规方式常规渠道(非标机) 硬件层面: 电脑设备的硬件权限受到it硬件技术部门的限制◎获取的权限有限(读取不到跟权限sudo禁用) 项目工程版本管理(云端仓库/本地端间数据通信转移): 本地(直接控制的硬件设备):办公电脑 远程读写设备(无法直接

    2024年02月16日
    浏览(12)
  • SVN 与 Git

      SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。互联网上很多版本控制服务已从 CVS 迁移到 Subversion。说得简单一点 SVN 就是用于多个人共同开发同一个项目,共用资源的目的。 集中式管理的

    2024年02月03日
    浏览(13)
  • svn 代码迁移到git

    因公司架构变动,现要求将手中负责的项目从svn上迁移至git,其实迁移很简单,但是还需要保留 svn上的提交记录,就无行的给工作增添了一些难度,得还好网上教程比较多,这里是我实战的笔记,仅供参考。 注:此命令最好是在mac或LINUX系统上执行生成 users.txt 执行成功后会在

    2023年04月08日
    浏览(12)
  • Git,svn的介绍与使用

            Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。 Git基本概念  分类 介绍 工作区 仓库的目录

    2024年03月18日
    浏览(12)
  • svn和git 配置忽略文件

    ignore1.png 点击右上角绿色加号,出现如下对话框: ignore2.png 其中 Ignore specified file 选项是忽略指定的文件 Ignore all files under 选项是忽略指定文件夹下的文件 Ignore all files matching 选项是忽略匹配指定格式的文件 一般需要忽略的文件如下: **1、.idea文件夹 ** **2、.gradle文件夹 **

    2024年04月23日
    浏览(11)
  • svn迁移到git实际操作

    结果:  注:如果在后续执行时报错,在第一行加上: VisualSVN Server =  VisualSVN Server svn@email.cn  2.新建个文件夹,将生成的userinfo.txt放入新建的文件夹,然后在新建的文件夹中右键选中gitbash弹出窗口后执行下面命令,拉取svn代码到本地新建文件夹中 若是第一次拉取svn中一般会

    2024年02月16日
    浏览(14)
  • 将项目从 SVN 迁移到 GIT

    项目开发中,项目原本是用的SVN,已经用了一年了,现在公司要抛弃SVN用Git,要求把SVN的代码直接搬过去Git,并保留之前的历史提交记录。 找到已经被svn管理的项目的根目录 WinFarm,右键 Git Bash Here 在 WinFarm 目录里面生成了一个文件 userinfo.txt userinfo.txt样式如: liqiye = liqiye

    2024年02月02日
    浏览(13)
  • Android studio svn/git 相关

    1.从svn拉取的项目,但是在Android studio中打开时关联的是Git,没有svn相关菜单? 打开.idea-vcs.xml,把vcs=\\\"Git\\\"修改为vcs=\\\"svn\\\" Android Studio如何取消与SVN的关联(六)

    2024年02月08日
    浏览(11)
  • 安装 SVN 中文语言包和 Git

    SVN 中文语言包安装: Subversion(简称 SVN)是一个开源版本控制系统,用于协助开发团队管理和跟踪文件的变化。默认情况下,SVN 使用英文界面,但你也可以安装中文语言包以获得更适合中文用户的界面。下面是安装 SVN 中文语言包的步骤: 下载语言包:首先,你需要从 Sub

    2024年02月05日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包