我的编程空间,编程开发者的网络收藏夹
学习永远不晚

git和svn有什么区别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

git和svn有什么区别

这篇文章主要介绍了git和svn有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

区别:1、SVN是集中化的版本控制系统,而Git是分布式版本控制系统;2、SVN是按照原始文件存储的,体积较大,而Git是按照元数据方式存储的,体积很小;3、Git的分支操作不会影响其他开发人员,而SVN会影响。

svn与git简介

SVN (集中式版本控制系统)

SVN是Subversion的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。

工作流程

集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:

开始新一天的工作:

  • 从服务器下载项目组最新代码。

  • 进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。

  • 下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。

SVN属于集中化的版本控制系统

这种做法带来了许多好处,特别是相较于老式的本地VCS来说。现在,每个人都可以一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限。
事分两面,有好有坏。这么做最显而易见的缺点是中央服务器的单点故障。若是宕机一小时,那么在这一小时内,谁都无法提交更新、还原、对比等,也就无法协同工作。如果中央服务器的磁盘发生故障,并且没做过备份或者备份得不够及时的话,还会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,被客户端提取出来的某些快照数据除外,但这样的话依然是个问题,你不能保证所有的数据都已经有人提取出来。
Subversion原理上只关心文件内容的具体差异。每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。

Subversion的特点

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

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

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

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

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

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

GIT(分布式版本控制系统)

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库.

Git的功能特性

一般开发者的角度来看,git有以下功能:

  1. 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

  2. 在自己的机器上根据不同的开发目的,创建分支,修改代码。

  3. 在单机上自己创建的分支上提交代码。

  4. 在单机上合并分支。

  5. 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

  6. 生成补丁(patch),把补丁发送给主开发者。

  7. 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

  8. 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

  1. 查看邮件或者通过其它方式查看一般开发者的提交状态。

  2. 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。

  3. 向公共服务器提交结果,然后通知所有开发人员。

Git属于分布式的版本控制系统

自2005年诞生于以来,Git日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。

与SVN不同,Git记录版本历史只关心文件数据的整体是否发生变化。Git并不保存文件内容前后变化的差异数据。实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照作一连接。

Git特点

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

  2. Git的每一次提取操作,实际上都是一次对代码仓库的完整备份。提交完全在本地完成,无须别人给你授权,你的版本库你作主,并且提交总是会成功。

  3. 甚至基于旧版本的改动也可以成功提交,提交会基于旧的版本创建一个新的分支。

  4. Git的提交不会被打断,直到你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生在PULL和PUSH过程中,不能自动解决的冲突会提示您手工完成。

  5. 冲突解决不再像是SVN一样的提交竞赛,而是在需要的时候才进行合并和冲突解决。

svn和git的区别

  • SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。

    Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch ,merge ,push,rebase,Git擅长的是程序代码的版本化管理。

  • GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。

    可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。

  • 而Git按照元数据方式存储,体积很小;SVN按照原始文件存储,体积较大。

    GIT把内容按元数据方式存储,而SVN是按文件所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。

    如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

  • 分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。

    然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

  • GIT没有一个全局的版本号,而SVN有目前为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。因为GIT和SVN从概念上就不同,我不知道GIT里是什么特征与之对应。如果你有任何的线索,请在评论里奉献出来与大家共享。

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

  • 分支操作的影响

    Git的分支操作不会影响其他开发人员;而SVN会影响,创建新的分支则所有的人都会拥有和你一样的分支。

svn和git的优缺点

SVN 的优缺点

SVN对中文支持好,操作简单,使用没有难度,美工人员,产品人员,测试人员,实施人员都可轻松上手。使用界面统一,功能完善,操作方便。

Git的优缺点

对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。不支持中文,图形界面支持差,使用难度大。不易推广。

svn和git适用范围的不同

  • 适用对象不同。Git适用于参与开源项目的开发者。他们由于水平高,更在乎的是效率而不是易用性。SVN则不同,它适合普通的公司开发团队。使用起来更加容易。

  • 使用的场合不同。Git适用于通过Internet,有多个开发角色的单个项目开发,SVN适合企业内部由项目经理统一协调的多个并行项目的开发。

  • 权限管理策略不同。Git没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。SVN则有严格的权限管理,可以按组、按个人进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操作。保证代码永远可以追踪。

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

  • 基于第三点,Git适用于单纯的软件项目,典型的就是一些开源项目,比如Linux内核、busybox等。相反,SVN擅长多项目管理。比如,你可以在一个SVN仓库中存放一个手机项目的bsp/设计文档/文件系统/应用程序/自动化编译脚本,或者在一个SVN中存放5款手机项目的文件系统。git中必须建立n(项目数)*m(组件数)个仓库。SVN中只需要最多n或者m个就可以了。

  • Git使用128位ID作为版本号,而且checkout时要注明是哪个branch,而SVN使用一个递增的序列号作为全局唯一的版本号,更加简明易懂。虽然可以使用gittag来建立一些文字化的别名,但是毕竟那只是针对特殊版本。

  • 可跟踪性,git的典型开发过程为:建立分支,进行开发,提交到本地master,删除分支。这样做的后果是以前的修改细节会丢失。而在SVN下做同样的事情,不会丢失任何细节。这里是一个有趣的链接,表明了git下典型的工作方式:(以master为核心,不断创建新branch,删除旧branch)

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

SVN 和 Git 哪个更适用于项目管理?

首先说一下,我是一个研发团队的项目经理,SVN和Git我都用过,SVN更适用于项目管理, Git仅适用于代码管理。

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

感谢你能够认真阅读完这篇文章,希望小编分享的“git和svn有什么区别”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

git和svn有什么区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

git和svn有什么区别

这篇文章主要介绍了git和svn有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。区别:1、SVN是集中化的版本控制系统,而Git是分布式版本控制系统;2、SVN是按照
2023-06-21

git和SVN的区别小结

Git和SVN都是版本控制系统,用于管理和跟踪软件开发过程中的更改。然而,它们之间存在一些重要的区别:1. 分布式vs集中式:Git是一种分布式版本控制系统,每个开发者都有完整的代码仓库副本,并能够在本地进行更改和提交。SVN是一种集中式版
2023-08-11

Git和SVN的对比:区别和优缺点是什么

当涉及到版本控制时,Git和SVN是最流行的选项。但是哪一个更好呢?这是一个值得探讨的话题。在本篇文章中,我们将探讨Git和SVN之间的区别,以及它们的优点和缺点。Git和SVN的区别Git是一种分布式版本控制系统,而SVN则是集中式版本控
2023-10-22

git revert和git reset有什么区别

这篇文章将为大家详细讲解有关git revert和git reset有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。git revert和git reset的区别git revert 是生成一个新
2023-06-09

git pull和git clone的区别有什么

git pull和git clone的区别有什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。本篇文章给大家带来了Git教程中git pull和git clon
2023-06-26

SVN和GitHub的区别是什么

SVN和GitHub是两种常用的版本控制系统。SVN(Subversion)是Apache软件基金会下的一个开源版本控制系统,而GitHub则是一个基于Git版本控制工具的代码托管和协作平台。两者都有其优缺点和适用场景,下面将对它们的区别及
2023-10-22

GitLab和SVN的区别是什么

本篇内容主要讲解“GitLab和SVN的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GitLab和SVN的区别是什么”吧!GitLab是一个基于Git的在线代码托管平台。Git是一种
2023-07-05

Git Reset和Git Revert命令有什么区别

这篇文章主要为大家展示了“Git Reset和Git Revert命令有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Git Reset和Git Revert命令有什么区别”这篇文章吧。
2023-06-15

GitHub 和 Git 到底有什么区别?

GitHub 和 Git 是两个经常被拿来比较的词汇,但它们实际上有着不同的定义和用途。本文将解释这两个术语的区别以及它们在开发中的作用。Git 是什么?Git 是一个分布式版本控制系统,它通过跟踪文件的修改历史记录,保存不同版本的代码和文
2023-10-22

git与SVN版本控制优缺点区别是什么

这篇文章主要讲解了“git与SVN版本控制优缺点区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“git与SVN版本控制优缺点区别是什么”吧!Git和SVN的区别(1)SVN(集中式版
2023-06-30

svn和git适用范围有什么不同

本篇内容主要讲解“svn和git适用范围有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“svn和git适用范围有什么不同”吧!Git是一款开源的分布式版本控制系统,用以有效、高速的处理从
2023-06-21

git pull和git clone的区别是什么

本篇内容介绍了“git pull和git clone的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!区别:“git clone”是
2023-06-21

Git,GitHub与GitLab有什么区别

Git,GitHub与GitLab的区别有:1、架构和功能不同;2、部署方式和可定制性不同;3、社区和生态系统不同;4、访问权限和费用不同。架构和功能不同在于,Git是分布式版本控制系统,提供分支管理和合并功能;而GitHub和GitLab是基于Git的代码托管平台,GitHub具有丰富的社交化功能,GitLab则提供了自托管的部署方式。
Git,GitHub与GitLab有什么区别
2023-10-29

github与svn的区别是什么

现在,软件开发和协作已成为人们最为普遍的工作方式之一。在这个领域,有许多工具可供选择,其中两种最受欢迎的是 GitHub 和 SVN。它们的共同作用是协助开发团队管理代码、版本控制和协作。然而,两种工具在功能上有所不同,因此选择哪一种工具应
2023-10-22

git和github有哪些区别

本篇内容介绍了“git和github有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!git和github的区别:1、git是一个版本
2023-06-21

git和gerrit有哪些区别

本篇内容介绍了“git和gerrit有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!git和gerrit的区别:1、Git是一种版本
2023-06-21

git和tortoisegit有哪些区别

这篇文章给大家分享的是有关git和tortoisegit有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。区别:1、git是一个开源的分布式版本控制系统,用于处理项目版本管理,而tortoisegit是To
2023-06-26

git fetch 和git pull区别

git fetch 和git pull区别有:1、目的不同;2、用途不同;3、用法不同;4、远端跟踪分支不同;5、拉取不同;6、commitID不同;7、安全性不同。其中,目的不同指fetch从远程获取最新版本到本地,但不会自动 merge,pull是从远程获取最新版本并 merge 到本地。
git fetch 和git pull区别
2023-10-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录