`

Git与Svn之异同(二.简明概要)

    博客分类:
  • Git
阅读更多

自从有了git,很多开源项目都转移到了git。对于我们初学版本管理的人来说,git和SVN究竟有什么不同的地方呢?最近粗略了解了下git,并与SVN做了一番比较,大概结果如下:
SVN VS git
一,集中式 VS 分布式
SVN是典型的C/S模式的集中式管理。客户端直接对服务端做各种操作。而git则大不相同,他是分布式的,而且我们使用git命令大多数时候,只是在本地进行操作。当本地的内容完成以后,才使用push这样的命令把他推送到服务器上的库中。

二,增量存储 VS 快照
SVN在保存文本文件的时候,如果产生一个新版本,那么存储的只是两个版本的差异。而git的则是每个版本的快照。这一点来看,SVN能节省空间,但是git则更方便存取文件。

三,SVN分支 VS git分支
SVN的分支,仅仅是一个URL拷贝。在处理分支合并的时候,效率不高。git的分支则更加方便,任何一分支的创建,仅仅是保存一个41字节的指针而已。我们来看看SVN的分支创建:

Shell代码  收藏代码
  1. $svn copy file:////repos/idp/trunk  file:///epos/idp/branches/mybranch  


从上面的语句可以看出,SVN的分支就是一个hard link的目录。
再来看看git的分支。

Shell代码  收藏代码
  1. $git branch mybranch  


在git中,创建分支是很廉价的,并且,对于分支的合并也是很容易。git 希望用户可以多使用分支。这里,如果要切换到分支,在git中使用

Shell代码  收藏代码
  1. $git checkout mybranch  

就可以了。

四,全局版本 VS 全球版本
SVN的版本号应该叫修订版本号。因为他是针对一次提交,并不是某个文件的版本。并且以数字来作为版本号,递增。git的版本号 是一串SHA-1 散列的字符串。这个散列是针对文件内容,并且发生碰撞的几率可以是微乎其微。即使全球的人一起工作,也很难产生一个冲突。

五,记录一切 VS 回滚
SVN是一部时光机,错了就错了,不可能得到完美的回滚或撤销(使用一些很变态的手法,也许可以达到这个目的)。git 支持回滚。如果要删除提交:

Shell代码  收藏代码
  1. $git revert HEAD  


注意这里本地(工作区)的修改并没有改变。

六、无处不在的.svn  VS .git
为了管理版本,SVN在每个Working copy的目录中都隐藏了一个.svn目录。而对于git来说,所有的库信息都在 .git目录里了,仅此一个,自然也就很大很大。

七,集中管理 VS 处处备份
SVN的权限管理,可以针对不同用户授予不同权限。而git只有读与写权限。要么可读,要么可写,任何用户有读权限,就可以下载整个库。实际上, 也可以通过各种配置,使得git也可以支持权限控制到各个目录(SSH,web)。不过这些配置会相对麻烦一些。而每一个git的工作拷贝都可以看成是一 份备份,这个对于开源项目来说也是不错的选择。

八,直接提交 VS 合并提交
由于SVN的模式,开发者可以独立的提交。而git开发者的提交,只是在本地的库。对于push操作,则是必需要谨慎的。这里,push并不会自 动合并,所以每一次提交后,再次提交的必需通过fetch(不合并),pull(合并)下最新的数据后,合并再push。这样就有很多工作方式了。

以上只是我的一点理解。可能还有很多方面的比较。目前也有一些人,把SVN和git结合起来工作,于是便有了 git-svn这样的工具。git还有很多有趣而且强大的东西。大家赶快来体会吧。

分享到:
评论

相关推荐

    git常见报错及解决方法.zip

    git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决...

    Git与SVN比较

    Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较

    rh-git218-git-svn-2.18.2-1.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    Git2.11.1+SVNGit2.4.0.zip

    Git-2.11.1-64-bit 和 TortoiseGit-2.4.0.0-64bit,适用于使用Git有服务器仓库,把写好代码放入Git仓库,使用SVNGit上传更新等,使用Git仓库的好处就在于,你在家里也是可以上传更新的,只要账号密码正确就可以了,...

    perl-Git-SVN-1.8.3.1-23.el7_8.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    git&svn版本控制工具.exe

    版本控制工具.exe

    git和svn学习入门教程

    现在使用git的比svn多了,但是git操作比svn复杂,上传git和svn的简单教程

    ffmpeg-git-amd64-static.tar.xz

    ffmpeg视频转码包 tar xvf ffmpeg-git-amd64-static.tar.xz

    git-svn-1.8.3.1-23.el7_8.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    svn_git_scanner:用于扫描git,svn泄露

    用于全球svn,git信息泄露扫描,基于多线程,带宽控制,代理线程池支持

    git-svn使用用法

    git-svn 的用法 介绍git-svn 的用法 和使用场景

    Git简明教程..........

    Git简明教程 ,让你通俗易懂的学习理解简单的git应用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    gitblit-1.8.0.tar.gz安装包

    gitblit-1.8.0.tar.gz安装包,适用于linux环境,git的仓库服务器

    git_svn.rar

    2020最新git,svn安装包,希望大家支持,5分不贵,谢谢,官网的,最新的.up,up,up,go,go,go 良心,下载速度很快!!

    Git小结......

    Git小结......

    git 视频教程

    git视频教程.1.Git 命令 - git help、git config.mp4 ...git视频教程.10.Git 命令 - git svn、git fast-import.mp4 git视频教程.11.Git 命令 - git gc、git fsck、git reflog.mp4 git视频教程.12.Git 命令 - 总结.mp4

    git 、svn汉化包

    git 、svn汉化包git 、svn汉化包git 、svn汉化包git 、svn汉化包git 、svn汉化包

    git-svn-2.31.1-2.el8.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    git svn转换工具

    svn+git实现离线提交并且不需要到处所有svn版本,速度超快非一般的感觉,超越git本身的git2svn功能。 使用本工具需要安装基础工具: 首先安装git msysgit:https://code.google.com/p/msysgit/downloads/list msysgit...

    svn和git区别.md

    svn和git区别.md

Global site tag (gtag.js) - Google Analytics