GitHub,不少做IT行业的朋友都听说过,甚至已经是GitHub用户了。这是一个基于Git的源代码托管服务的平台,它允许你使用标准的Git命令或者流程规范进行管理。GitHub平台于2007年10月1日开始开发,第一个beta版本于2008年2月上线,4月份正式上线正式版,算起来距今已经运行了近9年。这期间GitHub又加入了star、fork、wiki、follow等社交元素,开源的推动,各大公司以及开发者的代码的贡献,已经成为了当前全球最大的、属于程序员的基友社区。

Git

这个Linux的作者,我心目中的大神Linus Torvalds又一款逆天之作,他开发Git的初衷,就是为了更方便的管理和开发Linux内核源代码,是一款分布式的版本控制系统。它和集中式的CVS、SVN不一样,并不一定需要一个服务端的控制软件,就能进行版本控制,每一个Git端都是一个完整的源代码版本控制库,这样软件的发布、交流等就非常方便,而且速度极快。好吧,真是一言不合,就自己造一个,这就是大神。现在已经越来越多的开源项目和公司内部的代码管理使用Git,Git已经成为程序员需要掌握的、必备的工具,如果你还不会,可以通过 https://git-scm.com/ Git网站下载和学习。

加入GitHub

要成为这个最大的基友社区的一名基友,你必须要得有一个GitHub账号,这样才能加入GitHub,要注册一个GitHub账号非常简单,打开https://github.com/join 按照提示一个个操作加入即可。

创建账号后,需要设置你自己电脑上的Git,以便和GitHub开发交互管理等,具体设置参见官方帮助https://help.github.com/articles/set-up-git/.

然后就去创建自己的第一个GitHub项目吧,具体可以参考官方帮助https://help.github.com/articles/create-a-repo/,很非常详细,看了就会了。

这些都会了后,基本上Github上就差不多了,可以逛逛,也可以看看GitHub上帮助教程,了解更多。

开源项目(Repo)

据不完全统计,GitHub上的项目已经高达760多万个。语言分布JavaScript有95万多个;Java73万多个;Ruby59万;Python47万,可以看到JavaScript当之无愧的语言老大,这也得益于最近几年的前端的高速发展,JavaScript语言已经快无所不能了。

以stars(点赞)的项目分布统计:

  • 超过1000个stars的项目有9,276个
  • 超过2,000个stars的项目有4,194个
  • 超过5,000个stars的项目有1,194个
  • 超过10,000个stars的项目有346个
  • 超过20,000个stars的项目有87个
  • 超过50,000个stars的项目有7个
  • 超过100,000个stars的项目有2个

可以看到越是stars越多的,会越老越少,GitHub上的stars能很好的反应一个项目(Repo)的受欢迎程度,如果大家找流行的Repo,可以使用这个标准。

我们看下stars排行超过50,000的这7个Repo都是哪几个。

  1. https://github.com/freeCodeCamp/freeCodeCamp 220,983 stars
  2. https://github.com/twbs/bootstrap 105,736 stars
  3. https://github.com/vhf/free-programming-books 75,940 stars
  4. https://github.com/d3/d3 59,142 stars
  5. https://github.com/facebook/react 57,668 stars
  6. https://github.com/angular/angular.js 54,345 stars
  7. https://github.com/sindresorhus/awesome 50,074 stars

可以看到第一名的freeCodeCamp的一骑绝尘,22万之多的stars,这是一个开源的学习代码和编程的非营利社区,里面有很多免费的课程。其次是twitter推出的前端开发框架bootstrap,非常流行;然后是一个免费的编程书籍收集Repo,里面有很多免费的电子书籍,可以点击学习;最后值得一提的是非常流行的awesome系列,他是一个个系列合集,里面又包含了你能想到的其他细分分类的awesome系列,比如java、android、微信小程序的等,这是一个汇总的资料项目,学习必用。

Organization

相比我们个人,在Github也有Organization(组织)的概念,这通常代表一个公司,或者一个团体、或者一个非盈利组织,它是多个人的集合,通常用于协作贡献、交流开发、管理等。

比如著名的Organization有google、facebook等,如果你是他们的粉丝,可以关注他们,有很多惊喜项目哦。

Showcases

Showcases,是GitHub根据你感兴趣的主题,做的一个展示,这里有VR(虚拟现实),机器学习等等主题,地址是 https://github.com/showcases,这也是我经常去的一个地方,在这里可以根据你的兴趣、你关注的主题、你公司需要等等,选择相应的主题,然后打开他们,就可以看到GitHub为你精选的项目了,作为参考学习。比如VR这个主题 https://github.com/showcases/virtual-reality

Trending,https://github.com/trending,GitHub上的风云榜,在这里你可以看到最近一天、一周、一个月哪些项目和开发者最流行,这基本上是我每天必看的,从这里可以找到新趋势、新技术以及新的基友。推荐每天必看,当今日头条新闻看,善用Trending,不要错过遗憾

Issues

在GitHub中,基友们之间的交互大部分都是通过issues(问题),这类似于提问题,讨论。每一个项目都有,你可以针对该项目打开一个issues,提出你的问题、和基友们讨论等等,就和一个小论坛一样。issues支持MarkDown语法,可以在线编辑,所以非常方便,有不少基友们用他来在GitHub上直接写博客,教程等。想和其他基友们交流,从一个issues开始吧。

Fork

这也是GitHub上的概念,意思是建立一个新的分支,比如你Fork了一个项目,就会在你的项目列表里创建一个同名的项目,也即是一个分支(和Git的分支不同),因为是你的所以你拥有它的所有权限,可以任意修改,删除,添加等等。

在贡献代码pull request之前,我们必须要先Fork,这样你才可以有权限修改这个项目,修改完成后,再提交发起pull request就可以提交你的贡献了。

同时Fork也是保存一个项目好办法,因为它是一个完全复制的分支,和原来的项目没有太大关系,所以即使原项目的代码内容被删除,你的还存在。

Pull requests

Pull requests,我们亲切的称为PR,这是在GitHub上代码贡献的流程,不管是你给别的项目贡献代码,还是别的人给你的项目贡献代码。一个完成的贡献代码的流程如下:

  1. Fork别人的项目,因为你是不能直接别人的项目的。
  2. Fork后就是自己项目了,和操作自己的项目一样,编写代码等,然后提交。
  3. 提交后,发起pull request给原项目,这时候对方才能看到你贡献的代码。
  4. 原作者看到后,会Review你的贡献等,如果没有没问题,就会接受Merge原项目中了。
  5. 这样你的贡献,就可以被更多的人使用到了。

如果你对一个项目有更好的想法,或者修复一个Bug等,就发起PR来贡献吧,GitHub上伟大的项目都不是一个写的,都是靠千千万万个贡献者,这也是开源的意义所在,这也是软件、甚至整个IT行业能这么高速发展的原因之一。

GitHub Pages

这是一个Github提供的静态网页服务,让你可以为你的开源项目创建一个介绍网站,来介绍你的项目以及使用等等。除此之外,他还有一个好的用处,就是搭建自己的个人博客,具体请参考我以前的一篇博客 http://www.flysnow.org/2015/03/10/github-page-with-hexo.html ,这是介绍我自己通过该服务,使用Hexo搭建个人博客网站的经验。个人博客是一个平台好的平台,不仅可以让你学习总结,也可以让你认识更多的朋友,为你的简历加分,如果没有,赶紧搭建一个吧。

Integrations

Integrations是GitHub推出的开放平台服务,可以让其他第三方利用GitHub的开放能力,构建一些开放工具或者平台,帮助开发者更好的开发、构建自己的项目,比如我们常用的Travis CI,可以帮我们持续构建,发布我们的项目。更多关于Integrations的工具或者平台,请到https://github.com/integrations 查找,有详细分类,也可以筛选过滤,非常方便。

打造个人简历

再GitHub上,我们不仅可以学习,研究开源项目,贡献以及讨论,还可以利用GitHub为我们的简历加分。我在筛选简历的时候,尤其看中有GitHub的,作为一个程序员,如果连GitHub账号都没有,甚至都没有听说过,这是不可原谅的,也不是一个合格的程序员。

多在GitHub上活跃,研究优秀的项目,多参与讨论和贡献,利用GitHub搭建自己的博客,然后把这些作为自己经验的一部分,写在你的简历上,相信我,这会为你加很多分,让你在应聘者中脱引而出,所以努力的把GitHub打造成自己的活简历吧