摘要:在和客户交流代码开发的过程中,时常会先入为主的交流起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. 如何使用Python将PDF转为图片

    将PDF转为图片能方便我们将文档内容上传至社交媒体平台进行分享.此外,转换为图片后,还可以对图像进行进一步的裁剪.调整大小或添加标记等操作. 用Python将PDF文件转JPG/ PNG图片可能是大家 ...

  2. FSCTF 2023(公开赛道)CRYPTO WP

    RSA 1 1.题目信息 提交格式:FSCTF{你所解出的内容} p=1458769258361 q=4556983871563 e=17 求d 2.解题方法 exp from gmpy2 impor ...

  3. Chromium GPU资源共享

    资源共享指的是在一个 Context 中的创建的 Texture 资源可以被其他 Context 所使用.一般来讲只有相同 share group Context 创建的 Texture 才可以被共享 ...

  4. 19. 从零开始编写一个类nginx工具, 配置数据的热更新原理及实现

    wmproxy wmproxy是由Rust编写,已实现http/https代理,socks5代理, 反向代理,静态文件服务器,内网穿透,配置热更新等, 后续将实现websocket代理等,同时会将实现 ...

  5. java值传递机制

    目录 1. 基本数据类型 2. 引用数据类型 3. 总结 1. 基本数据类型 public class ValueTransferTest { public static void main(Stri ...

  6. 手撕Vuex-Vuex实现原理分析

    本章节主要围绕着手撕 Vuex,那么在手撕之前,先来回顾一下 Vuex 的基本使用. 创建一个 Vuex 项目,我这里采用 vue-cli 创建一个项目,然后安装 Vuex. vue create v ...

  7. 使用单卡v100 32g或更低显存的卡,使用peft工具qlora或lora混合精度训练大模型chatGLM2-6b,torch混合精度加速稳定训练,解决qlora loss变成nan的问题!

    最近新换了工作,以后的工作内容会和大模型相关,所以先抽空跑了一下chatGLM2-6b的demo,使用Qlora或lora微调模型 今天简单写个文档记录一下,顺便也是一个简单的教程,并且踩了qlora ...

  8. command_execution

    前置知识 可以通过ping的TTL来判断系统的版本 判断了是Linux之后就使用Linux的连接命令来进行操作 这里直接全局搜索flag相关的文件 linux全局查询文件_linux全局查找某个文件- ...

  9. 随着Web3.0的到来,IPFS能否成为未来?

    IPFS能否成为未来互联网存储市场的霸主? 首先在说IPFS之前,我们有必要先聊一聊HTTP,因为目前我们从互联网上看到的,用的,基本上都是HTTP,自从1991年发明了HTTP,到现在已经多了30多 ...

  10. 归并排序(merge_sort)

    算法时间复杂度:妥妥的nlogn 步骤: 1.确定分界点 mid = (l+r) >> 1 2.递归排序左右两边 3.归并--合二为一(用两个指针,分别指向两个序列) 就是递归到最底部,然 ...