Github是一个代码的托管平台,也是一个为开发者提供的代码社区。所谓的托管平台,就是可以把自己写的代码托付给github进行管理,可以暂时简单的理解为备份(其实并没有这么简单哟);作为社区,开发者可以在github上创建自己的开源项目,关键的是,在这里可以与其他开发者协作编码。一些创业公司用它来托管软件的管理项目(作为个人学会用它来托管自己的代码是不是feel so cool),开源项目可以免费托管,私有的项目则需要付费。

Git是一款免费的开源分布式版本控制系统。那么什么是版本控制系统呢?它是用来确保由不同人所编辑的同一档案都得到更新。版本控制系统分为三类:本地版本控制系统、集中化版本控制系统和刚刚提到的分布式版本控制系统。下面我们分别了解一下这三类控制系统以对接下来github的学习形成比较深刻的认识。

本地版本控制系统

在项目中,为了防止项目相关信息的丢失,或者随着项目的进展,许多数据内容需要更新时,许多人都会给文件进行备份,或许还会改名加上备份时间来进行区分,这么做当然很简单方便,但是不免会出现一写问题。比如,往往一个项目经历的时间会比较长,这样一来,在文件目录中或许有一些文件的名字已经不清楚是什么了,弄错了文件丢了数据,对于一个项目来说,后果可想而知。

集中化版本控制系统

一个项目,往往有几个人甚至十几个几十个人一起协作完成,这样我们又遇到一个问题,项目最终需要整合,如果拿U盘拷来拷去,问题肯定会很多,所以就出现了集中式控制系统。该系统拥有一台单一集中管理的服务器,用来保存所有文件的修订版本,所有协同工作的人员通过客户端连接到这台服务器,取出最新文件或提交更新。这样所有项目成员之间可以看到项目的所有代码以掌握整个项目的进程,也便于项目总负责人进行管理。这听起来很不错吧,every coin has two sides,这样做最大的缺点是什么呢?想象一下,假如有一天,中央服务器突然出现单点故障了,服务器停机一小时,在这段时间内,谁都无法提交更新,也就无法协同工作。如果中央服务器的磁盘发生故障,并且没有备份或备份不及时,数据就悄悄溜走了。最坏的情况是彻底丢失整个项目的所有记录。只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新信息的风险。

分布式版本控制系统

时势造英雄,为了解决上述版本的问题,分布式版本控制系统应运而生。而git就是此类系统中的一个代表。它的优点是客户端不只是提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来,这样一来,任何一处协同工作的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复,因为每一次的提取操作,实际上都是一次代码仓库的完整备份。

除此之外,此类系统可以指定和若干个不同的云端代码仓库进行交互。藉此,你就可以在同一个项目中,分别和不同工作小组的人相互协作,根据需要设定不同的协作流程。

Git作为一个分布式版本控制系统,不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。

Github就是用来托管各种git库,并提供一个web界面,它的独特卖点在于可以简单的从一个项目中进行分支。可以为一个项目贡献代码,然后再通过项目负责人申请代码合并。如此炫酷的Github平台又被称为代码玩家的MySpace。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐