【转】SVN 与 GIT 详细对比

git和svn的详细对比

近期就【版本管理工具是否进行切换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等

posted on 2018-03-25 12:22 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

【转】SVN 与 GIT 详细对比相关推荐

  1. SVN和Git对比梳理

    在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢? SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的 ...

  2. GIT与SVN的底层原理对比

    GIT与SVN的底层原理对比 文件版本对比 文件版本对比 二者都是基于二进制文件存储; git是通过文件快照(相当于生成新的文件[如果文件内容发生变化]); svn是保存上下文件版本的差异性文件; g ...

  3. 02 SVN 与 Git 的优缺点

    上一篇博客大致聊了聊关于版本控制系统的周边,这一篇我们就来继续唠唠作为近年来最受欢迎的两个版本控制系统的优缺点吧. 聊优缺点之前,先简单了解一下这两个这两个版本控制系统好了: 关于 SVN SVN 概 ...

  4. 版本控制器:SVN和Git比较

    在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢?今天在此详细记录下: SVN(Subversion)是集中式管理的版本控制器,而 ...

  5. SVN和Git的比较

    最近开始学Git,跟以前常用的SVN来做个对比,以便对双方的优缺点了解更多些. 其实Git和SVN还是挺像的,都有提交,合并等操作,看来这是源码管理工具的基本操作. 1. Git是分布式的,SVN是集 ...

  6. 转: SVN和Git的一些用法总结

    转:http://www.codelast.com/?p=5719 转载请注明出处:http://www.codelast.com/ 以下都是比较基础的操作,高手们请绕道,不必浪费时间来看了. (A) ...

  7. 深圳软件测试培训:SVN与Git的差异

    深圳软件测试培训:SVN与Git的差异 1. Subversion属于集中式的版本控制系统 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到 ...

  8. 软件测试——版本管理工具:SVN和Git

    软件测试--版本管理工具:SVN和Git SVN SVN的安装和介绍 SVN的安装 操作 冲突 Git Git的安装和配置 git的命令行用法 git 代码冲突 持续集成和持续交付 定义 目的 持续集 ...

  9. Git 详细教程之五:SSH 免密登陆 GitHub

       由于每次 Git 对远程库 GitHub 进行推送(push)等操作时都需要进行登陆验证才可以进行,比较麻烦.本篇博客提供了一种新的链接方式:『Git 详细教程之五:SSH 免密登陆 GitHu ...

最新文章

  1. 简述Python中的break和continue的区别
  2. Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库
  3. pythonweb开发-Web开发
  4. WSSv3 Technical Articles 系列文章
  5. git的使用1[转]
  6. ffmpeg 同宽度 画中画_FFmpeg中overlay滤镜用法-水印及画中画
  7. 嵩天python爬虫_我自己爬-python爬虫快速入门(一)
  8. ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本
  9. Pandas数据操作
  10. iOS 14.5广告跟踪功能使广告商在安卓支出增长21%
  11. SDN Overlay网络中虚机到物理机的数据包的转发
  12. Atitit java读取堵塞cmd命令行返回结果 java read maven 主要原理是另外线程读取标准流,错误流。。 回显增加out头,这样发布区分errstream和stdstream的
  13. 中望lisp加密_alisp文件加密测试.LSP
  14. 查询的端口 -解决端口被占用的问题
  15. TNF5SLNO 华为OSN1800全新原包装4路STM-16,8路STM-4或8路STM-1光接口板
  16. Excel表格将多个单元格内容合并到一个单元格中_工作中使用记录_2021-03-29
  17. 细读HTTPS -- SSL/TLS历史,密码学
  18. python 小游戏500行以内_README.md
  19. 计算机维护记录软件,Take-1 Recorder(电脑操作记录软件)
  20. 什么是css Hack

热门文章

  1. 2020年12月份学习总结,PMP与信息系统项目管理师的回顾
  2. 10个典型实用的PHP代码片段
  3. Path does not chain with any of the trust anchors
  4. 怎样快速使用富文本编辑器
  5. 我的代码为什么看起来像shit?
  6. java的socket读取一行就结束运行了?使用这种方法可以读取多行数据!
  7. 利用PowerShell进行数据库部署冒烟测试
  8. 再论CMMI和敏捷的对话
  9. Java Web Start入门基础教程
  10. 针对SSL/TLS的拒绝服务攻击以及使用ettercap进行DNS欺骗