Git、GitHub、GitLab三者之间的联系以及区别web
在讲区别以及联系以前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转)安全
1.什么是 Git?服务器
Git 是一个版本控制系统。网络
版本控制是一种用于记录一个或多个文件内容变化,方便咱们查阅特定版本修订状况的系统。分布式
之前在没有使用版本控制的时候,咱们一般在咱们的项目根目录下这样命名项目:版本控制
project_v一、project_v1.一、project_v2等等,经过这种方式记录咱们项目的不一样版本的修改,ci
有的时候咱们还会在不一样版本的文件中写一个说明,记录此版本项目新增、修改,删除等操做。资源
这样的操做是很繁杂的,有的时候还可能由于一些非人为因素致使文件丢失这样的事故。开发
有了版本控制系统,咱们就不用再手动进行一些繁杂的操做,而且对于文件丢失这种事故咱们也不同步
用再担忧,你能够随便回到历史记录的某个时刻。
早期出现的版本控制系统有:SVN、CVS等,它们是集中式版本控制系统,都有一个单一的集中管理
的服务器,保存全部文件的修订版本,而协同合做的开发人员都经过客户端链接到这台服务器,取出
最新的文件或者提交更新。
从网上找了一张图,展现一下它们的原理:
而咱们的主角 Git 是分布式版本控制系统。Git 已经成为愈来愈多开发者的青睐,由于分布式的优点是很显著的。
2.说一下集中式和分布式版本控制系统的区别:
集中式版本控制系统,版本库是集中存放在中央服务器的,工做的时候,用的是本身的电脑,因此,咱们首先须要
从中央服务器上拉取最新的版本,而后开始工做,等工做完了,再把本身的工做提交到中央服务器。在这里借用廖
雪峰老师的一个比喻,中央服务器比如是一个图书馆,你要改其中的一本书,必须先要从图书馆里把书借出来,然
后更改,改完以后,再放回图书馆。
集中式版本控制系统的一个最大毛病就是必须联网才能工做,因此对于网络环境比较差的状况使用集中式版本控制
系统是一件比较让人头疼的事情。
分布式版本控制系统没有中央服务器的概念,咱们使用相关的客户端提取的不仅是最新的文件,而是把代码仓库完整
地镜像下来,至关于每一个人的电脑都是一个完整的版本库,这样的话,任何一处协同工做的服务器出现故障,均可以
用任何一个镜像出来的本地仓库恢复。而且,即使在网络环境比较差的状况下也不用担忧,由于版本库就在本地电脑
上。
我的总结:
(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 依然是代码托管的首选。