【转】SVN 与 GIT 详细对比

近期就【版本管理工具是否进行切换SVN->Git】的问题进行了讨论,于是对svn和Git进行了相关研究,进而梳理出Git的特点(优、缺点),最后将Git与SVN进行了对比,对比结果详见下方内容。(有歧义的地方请评论指出!!!,THANKS)


版本工具

差异


svn


git


系统


1.集中式版本控制系统(更适用于项目文档管理)

2.更多用于企业内部项目并行开发


1.分布式系统(仅适用于代码管理)

2.更多用于通过开源项目开发


灵活性


1.搭载svn的服务器出现故障,无法与之交互
2.所有的svn操作都需要中央仓库交互(例:拉分支,看日志等)


1.可以单机操作,git服务器故障也可以在本地git仓库工作
2.除了push和pull(或fetch)操作,其他都可以在本地操作
3.根据自己开发任务任意在本地创建分支
4.日志都是在本地查看效率较高


安全性


较差,定期备份,并且是整个svn都得备份


较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息(gitlab集成了备份功能)


分支方面


1.拉分支更像是copy一个路径
2.可针对任何子目录进行branch
3.拉分支的时间较慢,因为拉分支相当于copy
4.创建完分支后,影响全部成员,每个人都会拥有这个分支

5.多分支并行开发较重(工作较多而且繁琐)


1.只能针对整个仓库进行branch,一旦删除无法恢复
2.拉分支时间较快,因为拉分支只是创建文件的指针和HEAD
3.自己本地创建的分支不会影响其他人

4.比较适合多分支并行开发


版本控制


1.保存前后变化的差异数据,作为版本控制
2.版本号进行控制,每次操作都会产生一个高版本号(svn的全局版本号)


1.git只关心文件数据的整体发生变化,更像是把文件做快照,文件没有改变时,分支只想这个文件的指针不会改变,文件发生改变,指针指向新版本
2. 40 位长的哈希值作为版本号,没有先后之分

3.git rebase操作可以更好的保持提交记录的整洁


工作流程


1.每次更改文件之前都得update操作,有的时候修改过程中这个文件有更新,commit不会成功
2.有冲突,会打断提交动作(冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。)


1.开始工作前进行fetch操作,完成开发工作后push操作,有冲突解决冲突
2.git的提交过程不会被打断,有冲突会标记冲突文件

3.gitflow流程(经典)


内容管理


svn对中文支持好,操作简单,适用于大众


对程序的源代码管理方便,代码库占用的空间少,易于分支化管理


学习成本


1.适用于普通的开发团队,使用起来更方便,成本较低


1.适用于开发者,水平高,更在乎效率而不是易用性,成本较高


权限管理


svn的权限管理相当严格,可以按组、个人针对某个子目录的权限控制


git没有严格的权限管理控制,只有账号角色划分


管理平台


有吧(注意这个“吧”字)


gitlab(建议使用,集成的功能较多,API开发),gerrit,github等

原文地址:https://www.cnblogs.com/timeObjserver/p/8643782.html

时间: 2024-08-13 00:46:33

【转】SVN 与 GIT 详细对比的相关文章

史上最全: svn与git的对比(二):svn与git的相关概念

如图1是svn服务器端数据的目录结构 下面是git服务器端的目录结构 纵观svn和git服务端的目录结构我们很容易发现 1.有些文件夹还是蛮像的,甚至是一样的比如说svn中的conf,hooks等git中也有,svn中的db类似与git中的objects. 2.git中的内容好像是比svn中,主要是多了head文件,branches,refs等 下面我们就详细来看一下这些文件夹或文件的作用 史上最全: svn与git的对比(二):svn与git的相关概念

【实习记】2014-08-25版本管理svn与git学习对比+看书UNIX网络编程

git也算中等熟练了,对其哲学也明白.但是svn一直半桶水. 上网搜索了几篇svn的好文,做一下总结: <svn分支开发与主干合并(branch & merge) >http://blog.csdn.net/bbirdsky/article/details/24620155 TortoiseSVN图形操作,适合初学者. <SVN中Branch的创建与合并>http://www.cnblogs.com/huang0925/p/3254243.html命令行的svn,适合真正要

svn,git的对比以及常用命令上篇

之前定制Rom,需要下载android源码,修改系统应用.android源码管理使用repo+git,下载速度快的吓人.(直接下载的话,被墙了当然慢,请忽略这个因素).感觉git更适合大型项目管理.项目经验不是非常多,个人无论大小项目,自己选择的话还是喜欢用git. 个人总结的git优点 1.分支管理非常方便 2.回退,查看历史更加方便,支持命令更多 3.速度更快 4.可以离线提交到本地库,可以离线查看log 5.... 下面参照大牛的介绍,来具体看一下git和svn的不同 参考http://s

Git/SVN 版本管理工具的对比

Mysql:修复表repair table name, 清空表truncate table name, 删除表drop table name 更改表名rename table name1 to name2, 备份表mysqldump 库名 表名 > 路径 字段分类group by name, 去重distinct , 字段排序order by desc/asc       ---- 小 Q -----------------------------------------------------

梳理版本控制器:SVN和Git比较

在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢?今天在此详细记录下: SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!这是两者之间最核心的区别. Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应Git提供的一些概念和特征. 先来说说集中式版本控制系统: 版本库是集中存放在中央服务器的,而干

git详细使用教程入门到精通(史上最全的git教程)

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上 改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了. 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器

初识SVN与GIT代码上传

最近开始进行多人项目,但是从来没有做过多人项目,所以Google了一下多人项目需要的一些注意事项 首先 第一点:在多人开发项目时候要在自己建立的类,在建立类的时候要在前缀加上自己的标识符用来区分类名,避免冲突 第二点:在书写代码时,两个开发者不要在同一个类中同时写一个类方法内容,这样在合并代码时会导致代码冲突,会引发很多问题 Git:git是一种分散式的代码上传方式,每个人在自己的电脑上都有一个完整的本地仓库,从网络仓库上克隆下来的都是完整的仓库,每个人都能看到整个项目的完整代码,当服务器宕机或

iOS开发——开发实战篇&amp;版本控制SVN和Git使用详解

版本控制SVN和Git使用详解 公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的! -----------------svn----------------- 一:最常用基本步骤--- 下载(完整下载,第一次),将服务器的项目下载到本地开始开发 svn checkout ip —uaerbane=? —password=?     //这里需要add 简:co 更新仓库,服务器项目有变动的时候需要更新到本地,以免错误或者冲突 svn updata    

iOS开发- 版本控制SVN和Git使用详解

公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的! -----------------svn----------------- 一:最常用基本步骤--- 下载(完整下载,第一次),将服务器的项目下载到本地开始开发 svn checkout ip —uaerbane=? —password=?     //这里需要add 简:co 更新仓库,服务器项目有变动的时候需要更新到本地,以免错误或者冲突 svn updata               //这里的直