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 ...
随机推荐
- Python3基础笔记_元组
# Python3 元组 ''' Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运 ...
- Python-数据分析模块
目录 numpy 模块 matplotlib 模块 pandas 模块 numpy 模块 numpy 模块主要用来做数据分析,对numpy数组 进行科学运算 主要方法和常用属性,都是用numpy 生成 ...
- iOS开发自定义转场动画
1.转场动画 iOS7之后开发者可以自定义界面切换的转场动画,就是在模态弹出(present.dismiss),Navigation的(push.pop),TabBar的系统切换效果之外自定义切换动画 ...
- Python(四)基础篇之「文件对象&错误处理」
[笔记]Python(四)基础篇之「文件对象&错误处理」 2016-12-08 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- BMP 图片格式
BMP根据颜色深度,可以分为2(1位).16(4位).256(8位).65536(16位)和1670万(24位)以及32位含有alpha通道.8位图像可以是 索引彩色图像外,也可以是灰阶图像,而索引 ...
- js 倒计时毫秒级别显示
<html> <head> <style> div{ width:100%; text-align:center; font-size: 14px; } </ ...
- Luogu P3558 [POI2013]BAJ-Bytecomputer(线性dp)
P3558 [POI2013]BAJ-Bytecomputer 题意 给一个只包含\(-1,0,1\)的数列,每次操作可以让a[i]+=a[i-1],求最少操作次数使得序列单调不降.若无解则输出BRA ...
- innodb状态
Innodb_buffer_pool_pages_data Innodb buffer pool缓存池中包含数据的页的数目,包括脏页.单位是page. Innodb_buffer_pool_pages ...
- webapp中<meta>与css代码部署
1.页面头部标签申明 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" id="te ...
- 吴恩达《机器学习》课程总结(18)_照片OCR
18.1问题描述和流程图 (1)图像文字识别是从给定的一张图片中识别文字. (2)流程包括: 1.文字侦测 2.字符切分(现在不需要切分了) 3.字符分类 18.2滑动窗口 在行人检测中,滑动窗口是首 ...