GIT → 02:Git和Svn比较
2.1 SVN介绍
2.1.1 SVN简介
SVN 属于集中式版本管理控制系统,服务器中保存了所有文件的不同版本,而协同工作人员通过连接svn服务器,提取出最新的文件,获取提交更新。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件CVS,在CVS的功能的基础上有很多的提升同时也能较好的解决CVS系统的一些不足。
2.1.2 SVN基本交互流程图

2.1.3 SVN缺点
集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。但是相较于其优点而言,集中式版本控制工具缺点很明显:
服务器单点故障必须连接在SVN服务器上,否则不能提交、对比、还原等
2.2 Git 介绍
2.2.1 Git与Svn记录具体差异
- Git 和其他版本控制系统的主要差别在于,Git 只关心文件的整体是否发生变化。而SVN这类版本控制系统则只关心文件内容的具体差异。
- SVN这类系统每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。然而 Git 并不保存这些前后变化的差异数据。
- 实际上,Git更像是把变化的文件作一个快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息(Hash值)并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。
2.2.2 Git的优势是什么
- 分布式,强调个体
- 公共服务器压力和数据量都不会太大
- 离线工作,每个人的本地仓库,大部分操作在本地库完成,不需要联网(SVN做不到)
- 分支操作非常快捷流畅(重点介绍)
- 可以吃后悔药, 尽可能添加数据而不是删除或修改数据(删除或修改不容易恢复,而每次添加一个版本,历史版本都有)
- 速度快、灵活, 有能力高效管理类似 Linux
- 内核一样的超大规模项目(速度和数据量)
2.2.3 Git 历史发展
- 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。
一开始 linus(莱纳斯)本人手动合并代码,Linux 开源项目有着来自世界各地的开发者参与,绝大多数的 Linux维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。
- 到 2002 年,商业软件 Bitkeeper 出于人道语义精神,授权给linux免费使用,要求是不能进行破解。于是整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。
- 到 2005 年的时候,linux社区开发者试图破解BitKeeper协议,但是被公司发现了,于是开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。
这就迫使 Linux 开源社区(特别是 Linux的缔造者 Linus )不得不吸取教训,于是 莱纳斯 自已用C语言开发了一套属于自己的版本控制系统,不至于重蹈覆辙。Git主体程序只发了两周,一个月后linux系统代码由git管理。
- 2008年,Github上线了,很多开源软件都放在Github上进行公布:Linux,Android, jQuery, Ruby,PHP,vue.js… 目前使用Git的项目数量也已经超过了使用SVN的仓库数。
GIT → 02:Git和Svn比较的更多相关文章
- Git 02: git管理码云代码仓库 + IDEA集成使用git
Git项目搭建 创建工作目录与常用指令 工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文. 日常使用只要记住下图6个命令: ...
- Git - 02. git 版本库简述: 类比平行宇宙
1. 概述 简单描述 平行宇宙世界观 将 git 与 平行宇宙世界观 做一个类比, 方便理解 熟悉科幻, 或者具体点, 是 漫威宇宙 的朋友, 可以稍微轻松一点 这个是 第一次 重写后的版本. 代码在 ...
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- PhpStorm 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项
第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...
- PhpStorm 9.03 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项
第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...
- Git 、CVS、SVN比较
Git .CVS.SVN比较 项目源代码的版本管理工具中,比较常用的主要有:CVS.SVN.Git 和 Mercurial (其中,关于SVN,请参见我先前的博客:SVN常用命令 和 SVN服务器配 ...
- 从VSS到SVN再到Git 记Git的基本操作
Source code control 一直是软件开发过程中重要的环节,从最初的纯文件备份,到使用工具进行管理.Source code control 工具的作用也不仅仅只是单纯的对同一个版本进行管理 ...
- GIT版本控制 — GIT与SVN的相互转换 (三)
git-svn git-svn用于Git和SVN的转换,可以把Git仓库迁移成SVN仓库,反之亦可. 详细介绍可见[1],或者命令行输入git-svn. Bidirectional operation ...
- 02: git分支管理
目录:GIT其他篇 01: git & github 02: git分支管理 目录: 1.1 Git常用命令 1.2 主要分支(保护分支) 1.3 特性分支:feature (开发分支合并到d ...
- 【原理、命令】Git基本原理、与Svn的区别、命令
一.Git是什么? Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote ...
随机推荐
- Vim操作 -- 按列
1, 拷贝行 Y y 拷贝当前光标字符 如果需要拷贝整个单词,可以用 ye,e表示跳到词尾 2, 粘贴 P(大写) 粘贴到光标前 p(小写)粘贴到光标后 3, 进入快操作模式 ctrl+q 4, 用 ...
- css之height: 100%的有效场景
在css的日常应用中,经常会遇到想要通过 height: 100%来达到使子盒子与父盒子高度一样的目的,但是偶尔明明设置了height: 100%,但是却没有达到想要的结果,这次我们就一起探索一下,什 ...
- 连通图,set——cf1037E
看了题解又调了很久,用set来维护当前满足条件的pair<degree[v],v> 离线操作,先建好一张图,然后建立好集合,每次删边后都把集合里不满足条件的点删去,同时更新集合 /* 离线 ...
- safari跨域cookie的问题
最近做了一个项目,是将自己公司的H5页面嵌入到其他公司的pc和移动端,采用的方案是iframe,跨域数据传输用的postMessage,最后在联调过程中发现iPhone的微信中无法打开,在 Setti ...
- R语言数据预处理
R语言数据预处理 一.日期时间.字符串的处理 日期 Date: 日期类,年与日 POSIXct: 日期时间类,精确到秒,用数字表示 POSIXlt: 日期时间类,精确到秒,用列表表示 Sys.date ...
- csdn阅读更多自动展开插件
点击获取 当然也可以自己写脚本.写js.
- 03_Sklearn的安装
1.Scikit-learn库介绍:包含许多知名的机器学习算法的实现,文档完善.容易上手,丰富的API. 2.安装:创建一个基于Python3的虚拟环境(可以在已有的虚拟环境中):mkvirtuale ...
- ES6之主要知识点(二) 变量的解构赋值。默认值
引自http://es6.ruanyifeng.com/#docs/destructuring 数组解构赋值 默认值 对象解构赋值 用途 1.数组的解构赋值 let [a, b, c] = [1, 2 ...
- vue 实现单选框
参考:https://blog.csdn.net/qq_42221334/article/details/81630634 效果: vue: <template> <div> ...
- css 渐变背景
background: linear-gradient(left,#fa7f6d, #fc5e7f); left: 从左边开始