目录
1 版本控制系统
1.1 Git介绍
git是一个分布式版本控制系统。版本控制是一种用于记录文件的变化并且我们能够查找这些变化的系统,在有版本控制控制系统之前,我们通过的是使用project_1、project_1.1、project_2这样的命名方式来进行区别,有时还会在不同版本的文件中写一个说明用于记录项目的修改变化。这样的处理方式常常会因为人的操作失误而导致项目损坏,但在有了版本控制系统之后,对于此类事故也不用担心。因为版本控制系统还能够帮助我们回调到任意项目版本,人们也能通过该工具更好更便捷的管理版本控制。
1.2 版本控制系统类型
版本控制系统分为集中式版本控制系统和分布式版本控制系统。早期的版本控制系统比如SVN、CVS等等,它们都是集中式版本控制系统,而目前更多人使用的Git是属于分布式版本控制系统。
1.2.1 分布式版本控制工具
分布式版本控制工具没有中央服务器的概念,当我们使用客户端(自己的电脑)的时候,通过该工具(例如:git)所提取是整个代码库而不是单单的某个文件,也就是每个客户端都是一个完整的版本库,不用担心服务器出现故障,我们的电脑可以作为服务器来将代码库进行恢复 。由于整个代码库是在我们的本地的电脑上的(不用重复拉取历史版本的代码),因此我们即使在网络环境比较差的地方也能够很好使用。工作原理如下图:
1.2.2 集中式版本控制工具
集中式版本控制工具具有中央服务器,代码库是集中存放在中央服务器上的。我们的电脑(客户端)想要工作的时候需要从中央服务器拉取最新的版本,在工作结束之后再把我们的代码提交上去。集中式版本控制工具需要在联网的情况下才能使用(因为在查看历史版本的时候需要从中央服务器拉取之前的版本),因此对于网络的要求是比较高的。
集中式版本控制工具借用廖雪峰老师的比喻来说,中央服务器就是一个图书馆,当我们(客户端 即 自己的电脑)想要修改书的时候,需要先从图书馆里借到这本书,我们在修改完成之后再它归还给图书馆。这样完成了整个修改的行为。工作原理如下图:
2 Git GitHub 与GitLab 的关系
2.1 Git 与 GitHub GitLab
git是一种版本控制系统,是一种工具,用于进行代码的存储和版本控制。而GitHub和GitLab是基于git而工作的。它们是web的git仓库,是可以进行代码托管的平台。
2.2 GitHub 与 GitLab
它们的功能是相似的,它们都提供了分享开源项目的平台,只是在一些细节上有点区别:
1.github是目前最大的代码托管平台,程序员能够在这互相交流学习(又因为男性用户多被戏称为最大的男性交友网站)。gitlab相比与github拥有更完善的界面和权限控制,更多的用于学校、企业等情况。
2.对于开源项目,github是代码托管的首选。但是如果想要追求私有性的话,gitlab是更好的选择
3.它们都有能够创建私有仓库,都是github的私有仓库是要收费的
3 总结
对于git与github gitlab的区别,有人把它们比作魔兽和对战平台的关系,有人把它们比作周杰与周杰伦的关系。对于我个人的理解,我感觉git就相当是ios、安卓系统,而github、gitlab就是基于这些系统而诞生的不同品牌手机。或者说git是英雄联盟(一款MOBA游戏),而github、gitlab是wegame(英雄联盟启动器)。