git,github,gitlab


如果初次接触git的朋友一定搞不清git,github以及gitlab这几个概念。

git如果不知道是啥,那你总知道svn是啥吧。什么?svn也不知道?那只好辛苦你动动手搜一下了。

git用一句话介绍:它是一个分布式的版本管理工具。然后我从网上找了两张图来对比svn和git的最主要的差异——分布式。

 

从上面两个图,可以看出使用svn的版本变化数据都是存在于服务端的,最终控制中心只有一个。而git,每一个客户端都可以作为一个版本管理中心,当然它也需要有一个公共的总控制点。

再给大家举一个例子吧,比如我和朋友一起开发一个软件,这个软件有很多代码片段,所以改动也比较频繁。如果使用svn,那我们无论谁每改动一段代码都要推送到svn中心去,而为了保证代码统一,其中一个人只要因为推送新的代码变动了控制中心,另一个人都要把改动的地方拉取到自己的电脑。所以这样就比较麻烦了。

而使用git时,我和朋友都可以在自己电脑上搞一个git控制中心,我们电脑里面的代码可以不一致,只需要用自己的git管理自己的那一部分代码。而git服务端只是用来合并我和朋友的最终版本代码的,平时的小改动由我们自己电脑里面的控制中心来管理,git服务端不用关心。

下面我用一个公司老总管理员工的例子再来总结一下svn和git的差异。svn架构里面的管理者比较独裁,不信任任何人,所有的事情都是亲力亲为,它宁愿管理所有员工也不设置下级管理者。

而git架构里面的老总比较明智,他比较偷懒,只管大事情,小事情都是交给下面的小leader去搞定的。每个小leader去管理自己的下属也不用关心其他leader的事情。但是所有leader都需要不定期向大boss汇报一下近期的情况。

github,是一个web界面的git管理平台,也就是说它底层的技术驱动依然是git。一句话区分,git是管理工具,github是在线的基于git的平台(或者叫做服务)。github的角色也就是我们上面例子中的大boss。github是公开的,谁都可以注册账号,并创建自己的项目,大部分项目以代码为主,比如wordpress、discuz都是托管在github里面的,当然还有好多好多开源的软件。

既然github是一个公共的,在线的提供服务的平台,那企业就可以把公司内部的代码托管在这里,为了安全我们可以选择付费服务,定制个性化方案。但毕竟github在国外,要想获得更好的功能还需要花钱,小企业或者个人用户自然是不愿意去开销了。

还好又一款开源的软件可以帮我们搭建一套类似github的平台,这就是接下来我要介绍的gitlab。 gitlab适合企业内部构建私有代码管理平台,它有健全的权限控制系统和各种强大的功能,很赞。

所以,gitlab和github一样,也是一个基于git的提供web界面的代码管理平台。