zoukankan      html  css  js  c++  java
  • GIT和SVN的区别

    这是一个坑,我自己挖的坑。当初IBM的面试时候我在简历上写了用过SVN和GIT(确实用过),单纯会用,但是没有深入研究过,然后问到了SVN和GIT的区别是什么,我又没有答出来。啊啊啊!!!很可惜的一道题,其实并不难,就是我不会讲,当初也没有考虑过。现在找了点资料,整理下吧。

    一提到GIT和SVN,最大的不同就是Git是分布式的,而SVN不是分布的。GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。而SVN就做不到这一点,必须保证有网。

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

    Git没有一个全局版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征

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

    提交(Commit)上的不同:在SVN,当你提交你的完成品时,它将直接记录到中央版本库。当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。如果网路中断,你根本没办法提交!而Git的提交完全属於本地版本库的活动。而你只需“推”(git push)到主要版本库即可。Git的“推”其实是在执行“同步”(Sync)。

    Git check out后,在OffLine状态下可以看到所有的Log,SVN不可以

    分支(Brach)不同。
    分支在SVN中一点不特别,分支在SVN就是版本库中的另外一个完整目录,且这个目录拥有完整的实际文件。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。所以,经常会发生有些分支被遗漏的情况。如果工作成员想要开啟新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。如果你的分支是用来进行破坏工作(安检测试),那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载,十分狗血。而 Git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。

  • 相关阅读:
    11.正则表达式的一些简单应用
    10.JavaScript距离生日还有多少天、根据出生年月日计算年龄、打印当前月份每天的星期
    9.JavaScript获取当前时间,返回格式年-月-日 时:分:秒
    8.JavaScript获取一个从最小值到最大值的随机数
    7.JavaScript数组乱序排序
    6.JavaScript中的new.target
    5.JavaScript自定义数组排序
    2-9 随机模块
    2-8 四则运算
    1-22Python练习题1-1
  • 原文地址:https://www.cnblogs.com/timePasser-leoli/p/7473848.html
Copyright © 2011-2022 走看看