1:最主要的区别是Git是分布式版本控制系统,而SVN是集中式的版本控制系统。能理解这一点,区别它们就会容易很多,Git并不是目前唯一的分布式版本控制系统,比如还有Mercurial等。不过话说回来Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个本地仓库(Local Repository)所以即使没有网络也一样可以提交(Commit),查看历史版本记录,创建项目分支等操作,等网络再次连接上push到Server端

  这样看来Git相比较Svn有很大的优势,但是Git却增加了不少复杂性,因为需要创建两个仓库(Repositories)本地仓库(Local Repositories)& 远程仓库(remote Repositories),指令很多,除此之外你需要知道哪些制定在本地仓库用,哪些指令在远程仓库

  2:Git把内容按元数据方式存储,而Svn是按文件,因为Git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,比如标签、分支、版本记录等,Git目录的体积大小跟Svn比较,你会发现它们差距很大。

  3:Git没有一个全局的版本号,而Svn有。

  4:Git的内容的完整性要优于Svn,Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

  5:Git下载下来后,在离线状态下可以看到所有的Log,而Svn不可以

  6:Svn必须先Update才能Commit,忘记合并时会出现一些错误,Git还是比较少的出现这种情况。

  7:版本库:Svn只能有一个指定中央版本库,当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成,而Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree).如果主要版本发生了什么事情,工作成员仍然可以在自己的本地版本库提交,等待主要版本库恢复即可,工作成员也可以提交到其他的版本库!

  8:分支:在Svn,分支是一个完整的目录,且这个目录拥有完整的实际文件,如果工作成员想要开启新的分支,那将会影响所有人,每个人都会拥有和你一样的分支,如果你的分支用来进行一些破坏性工作,那将会像传染病i一样,你改一个分支,还得让其他人重新切分支重新下载。而Git每个工作成员可以任意在自己的本地版本库开启无限个分支。例如:我想尝试破坏自己的程序,并且想保留这些被修改的文件供以后使用,我可以开一个分支,做我喜欢的事情,完全不需担心妨碍其他工作成员,只要我不合并以及提交到主要版本库,没有一个工作成员会被影响,等到我不需要这个分支的时候,我只要把它从我的本地版本库删除即可。

  Git的分支名是可以使用不同名字的,例如,我本地分支名为test,而在主要版本库的名字其实是Master。

  值得一提的是,我可以在Git的任意一个提交点开启分支。

  9:提交:在Svn,当你提交你的代码时,他将直接记录到中央版本库,当你发现你的代码存在严重问题时候,你已经无法阻止事情的发生,如果网络中断的时候,你根本没有办法提交,而Git的提交完全属于本地版本库的活动,而你只需push到主要版本库即可,Git的push其实是在执行同步(Sync)

SVN 与Git的区别的更多相关文章

  1. svn和git的区别及适用场景

    svn和git的区别及适用场景 来源 https://blog.csdn.net/wz947324/article/details/80104621 svn的优势: 优异的跨平台支持,对windows ...

  2. 版本控制系统之SVN和GIT的区别

    版本控制器的作用: 1. 可以协同代码管理,让多人开发代码得以实现. 2. 回归到以前的任何一个时间点的代码处(好比:开始写了很多代码,后面有修改了一些,突然IDE崩溃,但是发现还是以前的代码更好,这 ...

  3. Svn与Git的区别

    把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容易,声明一点Git并不是目前唯一的分布式版本 ...

  4. SVN和Git 介绍,区别,优缺点以及适用范围

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统.作为一个开源的版本控制系统,Subversion管理着随时间改变的数据.这些数据放置在一个中央资料档案库( ...

  5. 话说Svn与Git的区别

    这篇主要是谈谈两者的区别,至于谁优谁劣看官自己思考吧! 把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点 ...

  6. svn 和 git的区别

    1.速度: 克隆一份全新的目录,以同样拥有五个(才五个)分支来说,SVN是同时复製5个版本的文件,也就是说重复五次同样的动作.而Git只是获取文件的每个版本的元素,然后只载入主要的分支(master) ...

  7. SVN和Git的区别

    这个地方就简单介绍一下 svn 的模式是: 1.写代码. 2.从服务器拉回服务器的当前版本库,并解决服务器版本库与本地代码的冲突. 3.将本地代码提交到服务器. Git分布式版本管理的模式是: 1.写 ...

  8. svn 跟 git的区别

    1.svn是集中式版本控制系统,git是分布式版本控制系统 2.svn是直接与服务器进行交互,git是将文件存到本地然后再推送到服务器 3.svn必须在连网的情况下工作,git可以不连网开发 4.sv ...

  9. SVN和GIT

    一.SVN SVN使用起来还是比较简单的,我使用的SVN小乌龟版本是1.1的.(SVN已经可以正常使用了) 先说下自己了解的SVN流程吧,可能比较简单,不过这个也是实际的使用情况,忽略了很多其他功能( ...

随机推荐

  1. BZOJ3786 星系探索 【Splay维护dfs序】*

    BZOJ3786 星系探索 Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均 ...

  2. groovy && java 混编 gradle 配置

    参考配置: apply plugin: "application" apply plugin: "java" apply plugin: "groov ...

  3. JavaFX 之窗口大小自由拉伸(四)

    一.问题场景 同样的,隐藏掉窗体的默认标题栏也会导致窗体大小自由拉伸功能的失效. 二.解决思路 判断鼠标在窗体的位置,改变鼠标样式,给窗体组件添加拖拽事件监听器,根据鼠标移动位置改变窗体大小. 三.代 ...

  4. java指定文件编码格式

    在创建文件并打印字符串时,如果不指定编码,默认是按系统的编码格式来.比如我们的linux环境中编码如下: CMREAD-SV43 /home/wlf> locale LANG=en_US.UTF ...

  5. 解决asp.net上传文件时文件太大导致的错误

    即使在web.config中添加了节点和设置依然是不行的,还是报文件太大的错误, <httpModules>       <add name="UploadHttpModu ...

  6. Socket客户端

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  7. 小峰Hibernate简介与HelloWorld

    一.Hibernate简介: 二.Hibernate4 版Hello World 实现 工程结构: com.cy.model.Student: package com.cy.model; public ...

  8. struts2学习(13)struts2文件上传和下载(1)

    一.Struts2文件上传: 二.配置文件的大小以及允许上传的文件类型: 三.大文件上传: 如果不配置上传文件的大小,struts2默认允许上传文件最大为2M: 2097152Byte:   例子实现 ...

  9. Java 输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)

    import java.util.*; /* * 输入一个整数,计算它各位上数字的和. * (注意:是任意位的整数) */ public class Sum02 { public static voi ...

  10. 分布式事务之:TCC几个框架的测试情况记录

    国内主要的开源TCC分布式事务框架包括 框架名称 Github地址  star数量  tcc-transaction  https://github.com/changmingxie/tcc-tran ...