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

    前几天同事问我多人协作代码管理上的问题,建议他是用分支,目前项目使用的是SVN,因此就想到了Git和SVN的分支有很大区别

    那SVN和Git都是有哪些区别呢?

    1.Git是分布式的,SVN是集中式的

      SVN必须有一个服务器版本库就放在一个中央服务器。所有开发人员都是与服务器进行交互的。

      Git更倾向于分布式开发,每台计算机上都有一个完整的本地版本库,和服务器上的一模一样。所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作。也有中心服务器,仅仅是为了方便交换大家的修改。

      去中心化的好处?

        操作处理速度快

        安全性更高。Git每个人的电脑都有完整的版本库,SVN集中式版本控制的中央服务器要是出了问题,所有人都没法干活了,一次需要定期备份,并且是整个SVN都得备份

        不依赖网络

    2.Git把内容按元数据方式存储,而SVN是按文件

      SVN保存前后变化的差异数据

      Git只关心文件数据的整体发生变化,更像是把文件做快照,文件没有改变时,分支只想这个文件的指针不会改变,文件发生改变,指针指向新版本

    3.Git没有一个全局版本号,而SVN有  

      SVN版本号进行控制,每次操作都会产生一个高版本号

      Git采用40 位长的哈希值作为版本号,没有先后之分

    4. Git的内容的完整性要优于SVN

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

    5.分支不同

      Svn 创建分支,其实就是创建了一个新的文件夹(目录)并拥有实际的文件的。相当于拷贝了一份源文件。创建完分支后,影响全部成员,每个人都会拥有这个分支。拉分支相当于copy时间较慢。多分支并行开发较重。

      Git可以在任意一个提交点(commit point)开启分支,并没有创建文件夹,你甚至看不到任何的改变。创建一个分支,就是多了一个索引文件,记录这个分支的变化,占用很小的空间。拉分支时间较快,拉分支只是创建文件的指针和HEAD。用户可以在同一个文件夹中,快速的切换不同的分支。每个分支,都是独立的,在这个分支里想做什么都可以,对其他分支没有一点影响。比较适合多分支并行开发。

    6.管理权限不同

      svn的权限管理相当严格,可以按组、个人针对某个子目录的权限控制

      Git没有严格的权限管理控制,只有账号角色划分

    7.工作流程不同

      SVN每次更改文件之前都得update操作,有冲突,会打断提交动作

      Git开始工作前进行fetch操作,完成开发工作后push操作,有冲突解决冲突。git的提交过程不会被打断,有冲突会标记冲突文件

  • 相关阅读:
    微信小程序——Now you can provide attr "wx:key" for a "wx:for" to improve performance.
    mac 桌面美化
    获取json对象长度
    js 记忆函数
    js提取整数部分,移除首末空格
    js糟粕
    zepto 获取checked selected元素
    BFC块级排版上下文
    zepto 获取select选中的值
    手机不支持onchange事件
  • 原文地址:https://www.cnblogs.com/baby123/p/10411103.html
Copyright © 2011-2022 走看看