【Git】Git 与 SVN 的区别概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dh_Chao/article/details/82383646

  日常工作中,经常会用到版本控制工具,目前用到的比较广泛的版本控制工具就是 SVN 和 Git 。这里对两者的区别做个简单概述。

定义

  SVN:是一个远程集中式的版本控制系统,与 RCS、CVS 比较来说,SVN 采用了分支管理系统,其设计的目的是为了取代 CVS
  Git:是一个开源的分布式版本控制系统,可以有效、高速地处理从小到非常大的项目版本管理
  

主要区别

1.存储方式区别

  Git 把内容按照元数据的方式来存储(类似于 Key/Value 数据库的形式),而 SVN 则是按照文件的形式存储。换句话可以这样理解,Git 是将文件中的内容取出来存到数据库当中,而 SVN 则是将文件进行拷贝。
  可以说几乎所有的版本系统都是将文件的元信息隐藏在类似 .svn、.cvs 等文件夹当中。而 .git 文件夹可以说是本地机器上的一个克隆版的版本仓库,它包含了远程中心版本仓库上的所有东西,例如标签,分支,版本记录等等。所以将 .git 文件夹的体积大小与 .svn 进行比较,会发现两者的差距很大。

2.使用方式区别

SVN 基本使用过程
图1 SVN 基本使用过程

Git 基本使用过程
图2 Git 基本使用过程

  从本地将新增或修改的文件推送至远程仓库过程当中,SVN 只需要 commit 一个步骤就够了,而 Git 则需要经过 addcommitpush 三个步骤。

3.版本管理模式区别

  Git 是一个分布式的版本管理系统,而 SVN 是一个远程集中式的管理系统。

SVN 集中式管理模式
图3 SVN 集中式管理模式

  在这里我们的 SVN 只支持一个远程仓库,如果说我们的远程 SVN 仓库挂掉了,那么本地项目就不能够进行提交、分支的切换等版本相关的任何操作。这也是集中式管理系统所存在的一个缺陷。

Git 分布式管理模式
图4 Git 分布式管理模式

  本地 Git 仓库是跟着项目走的,而不是跟着本机走的。也就是说一个项目内包含一个完整的 Git 仓库,多个项目会包含多个 Git 仓库。远程 Git 仓库能做的事情,本地 Git 仓库也能做,例如代码的提交、版本的回滚、分支的切换等操作。当然本地 Git 仓库也直接能和我们的远程 Git 仓库进行关联,Git 提供四种通信协议(localsshhttpgit)来支持与远程仓库的连接。Git 还支持多个远程仓库,即一个本地 Git 仓库能够连接多个远程 Git 仓库。

猜你喜欢

转载自blog.csdn.net/Dh_Chao/article/details/82383646
今日推荐