一、什么是 Git?
Git 是一个版本控制系统。
早期的版本控制系统有 SVN, CVS 等,它们是集中式版本控制系统,都有一个单一的集中管理服务器,保存所有文件的修订版本,开发人员都通过客户端连接到这台服务器,取出最新的文件或者提交更新。如下图所示:
Git 是分布式版本控制系统,我们的客户端把代码仓库完整的镜像下来,相当于每个人的电脑都是一个完整的版本库,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。
集中式版本控制系统和分布式版本控制系统的区别:
1. 集中式版本控制系统下的历史仓库存在于中央仓库,每次对比与提交代码都要连接到中央仓库。因此集中式版本控制系统最大的毛病在于:必须联网才能工作,网络环境较差的情况下使用就会很头疼;
2. 分布式版本控制系统下的本地仓库包含代码库和历史仓库,在本地就可以查看版本历史。因此分布式版本控制系统在网络环境差的情况下也能使用;
3. 多人开发时,如果中央仓库的 Git 仓库挂掉了,任何一个开发者都可以随时创建一个新的中央仓库,然后同步就可以恢复中央仓库。
二、GitHub 和 GitLab 的联系与区别
GitHub 和 GitLab 都是基于 web 的 Git 仓库,使用起来二者差不多,它们都提供了分享开源项目的平台。
二者最大的区别在于:
1. GitHub 同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的;
2. GitLab 允许免费使用私有仓库,因此从私有性上来看,GitLab 是更好的选择。