1、Git

Git是一个版本控制系统。

版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。

总结:

(1)分布式版本控制系统下的本地仓库包含代码库还有历史库,在本地就可以查看版本历史

(2)集中式版本控制系统下的历史仓库是存储于中央仓库,每次对比与提交代码都必须链接到中央仓库

(3)多人开发时,如果充当中央仓库的Git仓库挂掉了,任何一个开发者都可以随时创建一个新的中央仓库然后同步就可以恢复中央仓库

3、GitHub和GitLab都是基于web的Git仓库,使用起来二者差不多,他们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。

GitHub作为开源代码库,拥有超过900万的开发用户,目前仍然是最火的开源项目托管平台,GitHub同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的。

GitLab解决了这个问题,可以在上面创建私人的免费仓库。

GItLab让开发团队对他们的代码仓库拥有更多的控制,相比较GitHub,有不少特色:

(1)允许免费设置仓库权限;

(2)允许用户选择分享一个project的部分代码;

(3)允许用户设置project的获取权限,进一步提升安全性;

(4)可以设置获取到团队整体的改进进度;

(5)通过innersourcing让不在权限范围的人访问不到该资源;

从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。

Git、GitHub、GitLab三者之间的区别的更多相关文章

  1. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  2. $POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别

    $POST .$HTTP_RAW_POST_DATA.php://input三者之间的区别 访问原始 POST 数据的更好方法是 php://input或者$HTTP_RAW_POST_DATA.$H ...

  3. keydown,keypress,keyup三者之间的区别

    最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件 ...

  4. @private、@protected与@public三者之间的区别

    @private.@protected与@public三者之间的区别 类之间关系图 @private只能够使用在声明的类当中,其子类也不能够使用用@private声明的实例变量 @protected只 ...

  5. .NET、C#和ASP.NET三者之间的区别与联系

    .NET.C#和ASP.NET三者之间的区别与联系 1..net(dot net) .net是一个平台,抽象的平台概念. 实现形式是库:①定义了基本的类型(通用类型系统CTS,common type ...

  6. iOS中NSNotification、delegate、KVO三者之间的区别与联系?

    前面分别讲了delegate.notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在网上看到一个博客上详细 ...

  7. C#、.NET和ASP.NET三者之间的区别

    刚毕业后出去找工作面试的时候就遇到这个问题!.回答不上来.回来网上查的如下: 那么 .NET.C#和ASP.NET这三者之间区别不清楚,到底它们之间有什么联系呢? 1..NET是一个平台,一个抽象的平 ...

  8. 虚拟机、云主机、VPS 三者之间的区别

    当我们想部署网站的时候,经常会听到vps.云主机.虚拟机等关键字,那么你知道这几者之间的区别吗?本文就讲解一下VPS.云主机.虚拟机之间的区别. 什么是VPS VPS 是Virtual Private ...

  9. socket,tcp,http三者之间的区别和原理

    http.TCP/IP协议与socket之间的区别下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置: 7 应用层 例如HTTP.SMTP.SNMP.FTP.Telnet.SIP ...

  10. Git、GitHub、GitLab三者之间的联系以及区别

    在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转) 1.什么是 Git? Git 是一个版本控制系统. 版本控制是一种用于记录一个或多个文件内容变化,方便 ...

随机推荐

  1. 剑指 Offer II 堆

    059. 数据流的第 K 大数值 class KthLargest { public: priority_queue<int,vector<int>,greater<int&g ...

  2. Day22:数据库导入&分工&准备科研训练

    今日完成的任务: 1.与组员共同排查jar包中的问题,发现是由于未导入数据库. 网上查询后在MySQL workbench中完成了导入导出(图中user数据库). 2.完成实验报告分工,我负责结论部分 ...

  3. pinia学习

    1.安装 yarn add piniaOR 使用npmnpm install piniapinia是Vue的存储库,允许跨组件/页面共享状态.pinia和vuex的作用一样,充当一个存储数据的作用,存 ...

  4. 并发多线程学习(三)Java多线程入门类和接口

    1 Thread类和Runnable接口 上一章我们了解了操作系统中多线程的基本概念.那么在Java中,我们是如何使用多线程的呢? 首先,我们需要有一个"线程"类.JDK提供了Th ...

  5. 用Bootstrap设计后端页面模板

    <!doctype html><html lang="zh-CN"> <head> <meta charset="utf-8&q ...

  6. IDEA/webstorm 安装插件重启/迁移后插件丢失

    使用toolbox调整了IDE的安装位置, 重启后发现插件全部丢失, 之前确实破解过, 但是现在是正版的 直接说一下我的解决方案吧: help -> Edit Custom VM Options ...

  7. C++ 用同一个raw pointer传入shared_ptr构造函数生成两个智能指针有什么问题?

    Effective Modern C++ Item 19: use std::shared_ptr for shared-ownership resource Now, the constructor ...

  8. UVM reg model 常见问题记录

    1.仿真log中报出大量的"include_coverage not located, did you mean ***"? (1) user在构建register model或者 ...

  9. JS中函数的length以及arguments的length如何得到?

    function a(x,y){} a.length // 2 function b(x,y=2,z){} b.length // 1 function c(x,...args){} c.length ...

  10. Jquery 如何替换html字符串中标签属性值 ??

    如何利用JQuery 替换HTML字符串中的属性值呢? 如 html 字符串有很多 img标签,现在需要修改 img的src值 var html="<div style="t ...