【工具和中间件】git github gitlab

1.什么是 Git?

Git 是一个版本控制系统。

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

以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目:

project_v1、project_v1.1、project_v2等等,通过这种方式记录我们项目的不同版本的修改,有的时候我们还会在不同版本的文件中写一个说明,记录此版本项目新增、修改,删除等操作。

这样的操作是很繁杂的,有的时候还可能因为一些非人为因素导致文件丢失这样的事故。

有了版本控制系统,我们就不用再手动进行一些繁杂的操作,并且对于文件丢失这种事故我们也不用再担心,你可以随便回到历史记录的某个时刻。

早期出现的版本控制系统有:SVN、CVS等,它们是集中式版本控制系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同合作的开发人员都通过客户端连接到这台服务器,取出最新的文件或者提交更新。

从网上找了一张图,展示一下它们的原理:

【工具和中间件】git github gitlab

而我们的主角 Git 是分布式版本控制系统。Git 已经成为越来越多开发者的青睐,因为分布式的优势是很显著的。

2.说一下集中式和分布式版本控制系统的区别:

集中式版本控制系统,版本库是集中存放在中央服务器的,工作的时候,用的是自己的电脑,所以,我们首先需要从中央服务器上拉取最新的版本,即联网更新,然后开始工作,等工作完了,再把自己的工作提交到中央服务器,即联网提交。在这里借用廖雪峰老师的一个比喻,中央服务器好比是一个图书馆,你要改其中的一本书,必须先要从图书馆里把书借出来,然后更改,改完之后,再放回图书馆。

集中式版本控制系统的一个最大毛病就是必须联网才能工作,所以对于网络环境比较差的情况使用集中式版本控制系统是一件比较让人头疼的事情。

分布式版本控制系统没有中央服务器的概念,我们使用相关的客户端提取的不只是最新的文件,而是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库,这样的话,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。并且,即便在网络环境比较差的情况下也不用担心,因为版本库就在本地电脑上,单机回退,只有提交的时候才需要网络,即单机更新+联网提交

个人总结:

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

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

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

从网上找了一张图,展示一下它们的原理:

【工具和中间件】git github gitlab

3. 选择使用github 还是 gitlab?

Git是一个版本控制系统(Version Control System,VCS),Github是在线的基于Git的代码托管服务。

github和gitlab都是基于git开发的管理代码的软件,来实现对代码的管理。

所以,原先怎么用git操作github的,那么用git操作gitlab是一样的。

github和gitlab最大的区别是:github选择新建项目为私人时需要收费!而gitlab选择新建项目为私人时不需要收费,所以,选用原则是:

1.1如果个人写的代码是不重要的,可以让所有人看看,选择开源,选哪一个都没差别。

1.2如果个人写的代码比较有点水平,不想让别人看到,就使用gitlab。最主要原因gitlab免费支持私人仓库,而github需收费。

1.1如果个人写的代码很厉害,有商业价值,不想让别人看到,又怕代码数据泄露,就务必得选择gitlab,因为gitlab可以搭建公司/个人的服务器,存储数据安全。

2.如果是公司团队开发的代码,务必只能选择gitlab,搭建公司个人的gitlab服务,才能确保数据安全。

小结:个人使用github,毕竟热度更高;公司使用gitlab,免费私有仓库,免费保密。