摘要:在和客户交流代码开发的过程中,时常会先入为主的交流起Git;但在和很多中小型企业交流的过程,发现SVN的模式也被使用得很频繁。那么两者的具体差异有哪些呢?

本文分享自华为云社区《Git VS SVN》,作者:gentle_zhou。

在和客户交流代码开发的过程中,时常会先入为主的交流起Git;但在和很多中小型企业交流的过程,发现SVN的模式也被使用得很频繁。那么两者的具体差异有哪些呢?

什么是Git

Git是一个分散式的版本控制软体,最初由瑞典籍Linus Benedict Torvalds创作,在2005年以GPL的条款授权方式出现。最初其目的是为了更好地管理Linux核心开发。Git把数据看做是对小型文件系统的一系列快照(快照流);每当用户提交更新或则保存项目状态的时候,Git就会对当时的全部文件创建一个快照并保存这个快照的索引;为了效率,如果文件没有做修改,Git就不再重新存储该文件,而是只保留一个链接指向之前存储的文件。

随时间改变,Git内对数据的快照:

什么是SVN

SVN,Apache Subversion的简称,是一个开放源代码的版本控制系统,开发者是Apache软件基金会,在2000年发了初始版本。SVN是以文件变更列表的方式来存储信息,将存储在他们那的信息看做是一组基本文件和每个文件随时间逐步累积的差异;这些数据会放置在一个中央仓库中。

存储每个文件与初始版本的差异:

两者差异对比

1、Git是分布式的版本管理控制器(代码开发方便),便于开源项目的开发;SVN是集中式的版本管理控制器(文档管理方便),便于企业内部并行集中开发
2、Git支持单机操作,服务器即使有故障也可在本地仓库工作(除了push和pull/fetch,其余操作都可以在本地操作);SVN的服务器如果出现故障,用户就无法与之交互(所有SVN操作都需要和中央仓库交互)
3、Git每个开发者本地都是一套完整的版本库,记录着所有信息;SVN需要定期整体备份,安全性较差
4、Git本地创建的分支不会影响其他人,适合多分支并行开发;SVN创建的分支会影响团队里所有人,多分支并行开发任务较重且繁琐
5、Git提交过程不会被打断,有冲突会标记冲突文件;SVN提交如果有冲突会打断整个动作,提交的快没影响,提交的慢,需要先行解决冲突再提交
6、Git没有严格的权限管理控制,只有账号角色的划分;SVN的权限管理很严格,可以按照组、个人针对子目录进行权限控制

参考资料

1、https://www.geeksforgeeks.org/difference-between-git-and-svn/
2、https://git-scm.com/book/zh/v2/起步-Git-是什么?
3、https://zh.wikipedia.org/zh-tw/Git
4、https://zh.wikipedia.org/wiki/Subversion

点击关注,第一时间了解华为云新鲜技术~

初学开发必看:何为Git,何为SVN的更多相关文章

  1. Java编程思想重点笔记(Java开发必看)

    Java编程思想重点笔记(Java开发必看)   Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...

  2. vagrant三网详解(团队/个人开发必看) 转

    vagrant三网详解(团队/个人开发必看)   Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点. 一.端口映射(Forwarded port) 顾名思义是指把宿主计算机 ...

  3. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入L ...

  4. [转载] PHP开发必看 编程十大好习惯

    适当抽象 但是在抽象的时候,要避免不合理的抽象,有时也可能造成过渡设计,现在只需要一种螺丝刀,但你却把更多类型的螺丝刀都做出来了(而且还是瑞士军刀的样子..): 一致性 团队开发中,可能每个人的编程风 ...

  5. 【资料目录收藏】.NET开发必看资料53个 经典源码77个

    简单描述:为大家整理了下载中心.net资料,都是比较热的,好评率比较高的,做了一个可收藏的下载目录,希望大家喜欢~ 基于.net构架的留言板项目大全源码 http://down.51cto.com/z ...

  6. .NET开发必看资料53个+经典源码77个

    目录0豆下载:http://down.51cto.com/data/426019 附件预览: 基于.net构架的留言板项目大全源码 http://down.51cto.com/zt/70 ASP.ne ...

  7. Web前端开发必看的100道大厂面试题

    1. 说说gulp和webpack的区别 开放式题目 Gulp强调的是前端开发的工作流程.我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并.雪碧图.启动server.版本控制 ...

  8. 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍

    C++游戏服务器开发常用工具介绍 在软件开发过程中需要使用的工具类型实属众多,从需求建模到软件测试,从代码编译到工程管理,这些工具都对项目有着不可替代的作用.庄子有云,"吾生也有涯,而知也无 ...

  9. ASP.NET MVC开发必看系列

    一.关于HTTP协议的那些事 这可以说我们开发WEB程序的空气,推荐不断温故知新! HTTP协议 (一) HTTP协议详解 HTTP协议 (二) 基本认证 HTTP协议 (三) 压缩 HTTP协议 ( ...

  10. [浪风分享] PHP开发必看 我现在是这样编程的

    我在做什么 曾经,我试过接到一些需求.一眼带过后,脑袋马上随着高昂的斗志沉溺在代码的世界中 ,马不停蹄地敲着键盘直到最后测试的完成.我从思绪中恢复过来,乍一看自己写的功能,和需求差了十万八千里,我TM ...

随机推荐

  1. Stride游戏引擎试毒

    想找别的引擎用, 主要还是因为unity和国内盗版用户的互相伤害, 就算用免费的个人版也要不停的验证. stride引擎, 原名xenko, 再原名paradox... 一开始是日本厂商开发的引擎, ...

  2. PTA乙级1049

    不能直接两重循环数据是1e5会超时 这样 #include"bitsdc++.h" using namespace std; const int N=1e5+10; double ...

  3. CF671D Roads in Yusland 题解

    题目链接 题目要求我们求出选出若干条路径并最小化花费,如果这是在链上,我们可以考虑直接枚举每条路径的右端点 dp,那树呢?把路径剖分整个覆盖的集合就不一定连续了,没法 dp,况且题目里给了很强的条件: ...

  4. 前后端分离,前端发送过来的请求是服务器的ip还是用户的ip

    前后端分离部署时,服务器A用于部署前端项目,称为前端服务器,服务器B用于部署后端项目,称为后端服务器.后端服务器通过开放API的方式,向前端服务器中的前端项目提供数据或数据操作接口,以此实现前端与后端 ...

  5. 【本博客所有关于git文章迭代汇总】git操作(暂存,回退,绑定远程等),看这一篇就够了

    1.git常用操作 git 小白操作,无非是clone,然后拉取,提交分支,第一次clone的时候,关联远程分支可能会遇到问题,可以看第四条git关联远程分支 # 在当前目录新建一个Git代码库 $ ...

  6. Apollo 配置中心的部署与使用经验

    前言 Apollo(阿波罗)是携程开源的分布式配置管理中心. 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验 特点 成熟,稳定 支持管理多环境/多集群/多命名空间的配置 ...

  7. 这次弄一下maven 多模块项目,用vscode新建一下,便于管理项目

    首先 创建一个mvn项目, 直接在命令行执行, 原型生成: mvn archetype:generate 选一个maven quick start的template, 然后删除src和target文件 ...

  8. 数据库安装以及Navicat for MySQL 15安装

    1.数据库安装 2.安装数据库遇到的问题,解决方案:1,2 3.Navicat for MySQL安装 4.注册码

  9. Python自动化处理Excel数据

    需求描述:数据格式如下所示,需要分离出2023年7月1号之后的数据明细 数据核对与处理:从Excel文件中提取特定日期后的签收数据 1. 引言 在实际数据处理和分析过程中,经常会遇到需要从大量数据中提 ...

  10. 7z 一键压缩备份

    该批处理已开源 开原地址: 点击进入 磁盘备份 工具有很多,如果你需要增量式备份的话,以下这些方法并不适合你.goodsync 可以了解一下. 以下方式仅适用于,懒人一键压缩备份. 对于我来说 定期的 ...