git和svn的详细对比
近期就【版本管理工具是否进行切换SVN->Git】的问题进行了讨论,于是对svn和Git进行了相关研究,进而梳理出Git的特点(优、缺点),最后将Git与SVN进行了对比,对比结果详见下方内容。(有歧义的地方请评论指出!!!,THANKS)
其他相关: 1.git基础 2.git分支 3.实战篇 4.番外篇
|
版本工具 差异 |
svn |
git |
|
系统特点 |
1.集中式版本控制系统(文档管理很方便) 2.企业内部并行集中开发 3.windows系统上开发推荐使用 4.克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件,用时将近一个小时 |
1.分布式系统(代码管理很方便) 2.开源项目开发 3.mac,Linux系统上开发推荐使用 4.克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件,用时1分钟 |
|
灵活性 |
1.搭载svn的服务器出现故障,无法与之交互 |
1.可以单机操作,git服务器故障也可以在本地git仓库工作 |
|
安全性 |
较差,定期备份,并且是整个svn都得备份 |
较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息(gitlab集成了备份功能) |
|
分支方面 |
1.拉分支更像是copy一个路径 5.多分支并行开发较重(工作较多而且繁琐) |
1.我可以在Git的任意一个提交点(commit point)开启分支!(git checkout -b newbranch HashId) 4.比较适合多分支并行开发 5.git checkout hash值(切回之前的版本,无需版本回退) 6.强大的cherry-pick |
|
版本控制 |
1.保存前后变化的差异数据,作为版本控制 |
1.git只关心文件数据的整体发生变化,更像是把文件做快照,文件没有改变时,分支只想这个文件的指针不会改变,文件发生改变,指针指向新版本 3.git rebase操作可以更好的保持提交记录的整洁 |
|
工作流程 |
1.每次更改文件之前都得update操作,有的时候修改过程中这个文件有更新,commit不会成功 |
1.开始工作前进行fetch操作,完成开发工作后push操作,有冲突解决冲突 3.gitflow流程(经典) |
|
内容管理 |
svn对中文支持好,操作简单,适用于大众 |
对程序的源代码管理方便,代码库占用的空间少,易于分支化管理 |
|
学习成本 |
使用起来更方便,svn对中文支持好,操作简单,适用于大众 |
更在乎效率而不是易用性,成本较高(有很多独有的命令,rebase,远程仓库交互的命令,等等) |
|
权限管理 |
svn的权限管理相当严格,可以按组、个人针对某个子目录的权限控制(每个目录下都会有个.svn的隐藏文件) |
git没有严格的权限管理控制,只有账号角色划分(在项目的home文件下有且只有一个.git目录) |
|
管理平台 |
有吧(这个“吧”字,肯定有,但本人没有接触过) |
gitlab(建议使用,集成的功能较多,API开发),gerrit,github等 |
git和svn的详细对比的更多相关文章
- git跟svn 服务端对比
Git已经火了很久,简单的使用也没有问题,但有几个问题一直以来都没有搞清楚:git跟svn有哪些异同,两者相互的优劣是什么,git的分布式怎么理解,为什么有离线提交,,,自己动手,分别看一下服务端跟客 ...
- 【转】SVN 与 GIT 详细对比
git和svn的详细对比 近期就[版本管理工具是否进行切换SVN->Git]的问题进行了讨论,于是对svn和Git进行了相关研究,进而梳理出Git的特点(优.缺点),最后将Git与SVN进行 ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- GIT和SVN之间的区别及基本操作对比
1)GIT是分布式的,SVN不是: 这是GIT和其它非分布式的版本控制系统,例如 SVN,CVS等,最核心的区别.如果你能理解这个概念,那么你就已经上手一半了.需要做一点声明,GIT并不是目前第一个或 ...
- git与svn对比
git 与 svn 对比 git的使用不需要联机 SVN集中式版本控制:每个人的版本都是提交到服务器,服务器坏了就雪崩.git分布式版本控制: 安全,每人本地有个版本库,每个人都可以充当‘服务器 它 ...
- 对比 Git 与 SVN,这篇讲的很易懂
---恢复内容开始--- 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯工蜂发表于云+社区专栏 导语 本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始 ...
- Git和Svn对比
From: https://wenku.baidu.com/view/1f090e2e7275a417866fb84ae45c3b3567ecdd12.html Git和Svn对比 共享文档 ...
- 详细透彻解读Git与SVN的区别(集中式VS分布式)
Git是目前世界上最先进的分布式版本控制系统,其实 Git 跟 SVN一样有自己的集中式版本库或服务器,但是Git 更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect ou ...
- Git 与 SVN对比详解
一.Git vs SVNGit 和 SVN 孰优孰好,每个人有不同的体验. Git是分布式的,SVN是集中式的 这是 Git 和 SVN 最大的区别.若能掌握这个概念,两者区别基本搞懂大半.因为 Gi ...
随机推荐
- core文件无堆栈信息定位的思路
首先需要介绍一下,阅读此文需要有基本的汇编知识. 1.rbp(基址寄存器),rsp(堆栈寄存器),rip(指令寄存器). 2.程序执行时,没有遇到函数调用时,IP自增长,遇到函数调用时, 需要保存bp ...
- 所谓 A/B test
A/B测试就是上两个方案,部署后看效果.根据效果和一些结果参数决定采用哪个方案.灰度发布是切一部分业务使用新方案,看效果如何,是否有bug,会遇到什么问题.如果一切OK,就把全部业务切到新的方案上执行 ...
- Mac 全局变量 ~/.bash_profile 文件不存在的问题
不存在就新建呗~ $ cd ~/ $ touch .bash_profile $ open -e .bash_profile 然后输入以下内容 # set color的部分是配置iterm2的字体颜色 ...
- Windows下Python添加MySQLdb扩展模块
[更新 2012-09-16] 这里可以下载已经打包好的EXE文件,http://sourceforge.net/projects/mysql-python/(国内需穿越才可访问) DBank备份下载 ...
- 纹理mag filter不能取GL_XXX_MIPMAP_XXXX
今天遇到OpenGL error 0x0500错误,定位到 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter); 查看ma ...
- Spring Boot(四):利用devtools实现热部署,改动代码自动生效
一.前言 spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后 ...
- jQuery中的text(),html(),val()有什么区别
text():获取或者改变指定元素的文本html():获取或改变指定元素的html元素以及文本val():获取或者改变指定元素的value值(一般是表单元素) 以上3个都是jquery类库中的语法 第 ...
- [个人开发人员赚钱九]做一个日收入10元的APP!
[导语]尽管讲了非常多个人开发人员的文章.但新手开发人员怎样赚自己的第一个10块钱.确是最难的事情.群里有人说都不知道干什么app赚钱.全然没有想法.而且常常问我有什么高速赚钱的方法.我仅仅能遗憾地 ...
- The Way to Go读书笔记_第4章_基本结构和基本数据类型
“_”标识符 _ 本身就是一个特殊的标识符,被称为空白标识符.它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用 ...
- python django中使用sqlite3数据库 存储二进制数据ByteArray
在python中使用sqlite3数据库存储二进制流数据ByteArray,在django使用sqlite3数据库时,有时候也要注意最好使用二进制流ByteArray插入字符串. 使用ByteArra ...