要了解Github,我们首先要知道Git,Git是管理代码的工具,写代码不是件轻松的事儿,一个人写的时候已经不轻松了,一群人写就更不轻松了,但这世界上很多事都是怎么不轻松怎么来的,大部分人都会和别人一起写代码,问题在于,这么多人写一个东西,你今天写一点,我明天写一点,然后发现你写错了,又影响到了我前天写的,最后汇总的时候怎么查找错误?又在什么时候汇总?这些问题太多了。为了让写代码这件事儿美好一点,我们有了一种名叫代码管理的东西,Git正是其中之一,我使用过的还有SVN,但是今天我们只讲Git。
Git的核心思想是『分布式』,我们在服务器上面有一个『主仓库』,这里放的是拿得出台面的代码,我们也可以在自己的电脑上创建分支,这些分支由『主仓库』克隆而来,然后我们就可以愉快的在自己的电脑上写代码了,写完代码可以同步在自己电脑的分支里面,当你觉得自己的代码拿得出台面,我们可以申请把自己的代码更新到『主仓库』里面,一旦通过这样的审核,我们就对『主仓库』做了某种贡献,世界各地的杰出程序员不断的为一个项目的『主仓库』做贡献,让这个项目变得越来越完善。
Github是运用Git思想来工作的一个商业网站,所有开发者都可以在Github上面为自己的项目创建一个『主仓库』,好的项目就像狼群中的小鲜肉一样,大量的开发者会把这个主仓库中的代码克隆到自己的『分仓库』去,用更性感的话来说,就是『Fork』。
Git的方式的确很优雅,但问题在于,会有人愿意把自己辛辛苦苦的代码拿出来公布,并且让人Fork么?
会,不仅会,而且很多,Github有超过140万用户,你可能会撇撇嘴说那个啥啥社交软件都有2000万用户,区区140万算个啥。可是这140万用户几乎涵盖了这个世界上最优秀的开发者,我相信,你那个有2000W用户的社交软件的工程师,肯定也是用Github的。任何项目,在Github上面获得fork或star,都意味着其它工程师对这个项目的认可,这比100个QQ空间的赞更有价值。
为什么这些优秀的工程师会开源自己的项目?
因为开源是一种精神。
无数的软件开发者苦心积虑保护自己的代码不被破解,而还是被聪明绝顶的脚本小子破解了,但破解无数软件的脚本小子在接下来的破解中却傻眼了,因为这是开源的,不用破解也就破解了破解。
闭源意味着封闭,而开源则意味着开放,封闭很难进步,开放才会进步。开放让人类的智慧有聚集的可能,人类的智慧聚集起来不再是1+1=2,这是开源的力量。
闭源是一种排斥,而开源是包容,闭源是单打独斗,开源是同仇敌忾,闭源是敝帚自珍,开源是无私奉献,闭源是小富即安,开源是世界大同,闭源是资本主义,开源是共产主义。
Git,最初是由 Linux之父 Linus Torvalds在2005年开发出来的一款开源的版本控制系统。和其他版本控制系统一样,它最核心的一个概念就是仓库(repository)。仓库其实就是在电脑中开启了Git记录的一个文件夹/目录。仓库中可以包含多个文件以及子文件夹。Git中的仓库是存储在本地电脑上的,不像其他的版本控制系统(比如Subversion)将仓库存储在服务器当中。这就意味着Git允许你在电脑不联网的情况下也可以正常工作,你可以修改文件、提交、查看修改历史、分支、合并等等。
Git最初只有命令行,后来也开发出了桌面版GUI的程序,不过桌面版GUI功能有限,想要使用最完整的功能,还是建议使用命令行。
Git虽然是一个很好的版本管理系统,但是只通过命令行的方式来使用还是有一些不方便。于是在2008年,开源社区开发了一个叫GitHub的网站。它可以存储所有的Git仓库,并且提升了开发者们之间的协作体验。GitHub迅速成为了开源社区的宠儿,大量开源项目纷纷落户,使用它来做版本控制以及沟通协作。现在有成千上万的公司也加入了进来,使用GitHub作为公司内部的版本控制系统。
时至今日,GitHub已经不再单单是一个版本管理的网站,它更像是一个开源社区的社交工具。很多开发者们都会在上面去逛,看看有哪些好玩的、自己感兴趣的项目。我们也可以看到其他开发者们参与过哪些项目,每个人都好像有一张自己的名片。当你想要参与到某个项目中去时,项目管理者也可以根据你的记录来选择是否接受。