GitHub,不少做IT行業(yè)的朋友都聽說過,甚至已經(jīng)是GitHub用戶了。這是一個基于Git的源代碼托管服務的平臺,它允許你使用標準的Git命令或者流程規(guī)范進行管理。GitHub平臺于2007年10月1日開始開發(fā),第一個beta版本于2008年2月上線,4月份正式上線正式版,算起來距今已經(jīng)運行了近9年。這期間GitHub又加入了star、fork、wiki、follow等社交元素,開源的推動,各大公司以及開發(fā)者的代碼的貢獻,已經(jīng)成為了當前全球最大的、屬于程序員的基友社區(qū)。
Git
這個Linux的作者,我心目中的大神Linus Torvalds又一款逆天之作,他開發(fā)Git的初衷,就是為了更方便的管理和開發(fā)Linux內(nèi)核源代碼,是一款分布式的版本控制系統(tǒng)。它和集中式的CVS、SVN不一樣,并不一定需要一個服務端的控制軟件,就能進行版本控制,每一個Git端都是一個完整的源代碼版本控制庫,這樣軟件的發(fā)布、交流等就非常方便,而且速度極快。好吧,真是一言不合,就自己造一個,這就是大神。現(xiàn)在已經(jīng)越來越多的開源項目和公司內(nèi)部的代碼管理使用Git,Git已經(jīng)成為程序員需要掌握的、必備的工具,如果你還不會,可以通過 https://git-scm.com/ Git網(wǎng)站下載和學習。
加入GitHub
要成為這個最大的基友社區(qū)的一名基友,你必須要得有一個GitHub賬號,這樣才能加入GitHub,要注冊一個GitHub賬號非常簡單,打開https://github.com/join 按照提示一個個操作加入即可。
創(chuàng)建賬號后,需要設置你自己電腦上的Git,以便和GitHub開發(fā)交互管理等,具體設置參見官方幫助https://help.github.com/articles/set-up-git/.
然后就去創(chuàng)建自己的第一個GitHub項目吧,具體可以參考官方幫助https://help.github.com/articles/create-a-repo/,很非常詳細,看了就會了。
這些都會了后,基本上Github上就差不多了,可以逛逛,也可以看看GitHub上幫助教程,了解更多。
開源項目(Repo)
據(jù)不完全統(tǒng)計,GitHub上的項目已經(jīng)高達760多萬個。語言分布JavaScript有95萬多個;Java73萬多個;Ruby59萬;Python47萬,可以看到JavaScript當之無愧的語言老大,這也得益于最近幾年的前端的高速發(fā)展,JavaScript語言已經(jīng)快無所不能了。
以stars(點贊)的項目分布統(tǒng)計:
- 超過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都是哪幾個。
- https://github.com/freeCodeCamp/freeCodeCamp 220,983 stars
- https://github.com/twbs/bootstrap 105,736 stars
- https://github.com/vhf/free-programming-books 75,940 stars
- https://github.com/d3/d3 59,142 stars
- https://github.com/facebook/react 57,668 stars
- https://github.com/angular/angular.js 54,345 stars
- https://github.com/sindresorhus/awesome 50,074 stars
可以看到第一名的freeCodeCamp的一騎絕塵,22萬之多的stars,這是一個開源的學習代碼和編程的非營利社區(qū),里面有很多免費的課程。其次是twitter推出的前端開發(fā)框架bootstrap,非常流行;然后是一個免費的編程書籍收集Repo,里面有很多免費的電子書籍,可以點擊學習;最后值得一提的是非常流行的awesome系列,他是一個個系列合集,里面又包含了你能想到的其他細分分類的awesome系列,比如java、android、微信小程序的等,這是一個匯總的資料項目,學習必用。
Organization
相比我們個人,在Github也有Organization(組織)的概念,這通常代表一個公司,或者一個團體、或者一個非盈利組織,它是多個人的集合,通常用于協(xié)作貢獻、交流開發(fā)、管理等。
比如著名的Organization有google、facebook等,如果你是他們的粉絲,可以關注他們,有很多驚喜項目哦。
- https://github.com/google
- https://github.com/facebook
- https://github.com/square
- https://github.com/Microsoft
- https://github.com/twitter
- https://github.com/apple
Showcases
Showcases,是GitHub根據(jù)你感興趣的主題,做的一個展示,這里有VR(虛擬現(xiàn)實),機器學習等等主題,地址是 https://github.com/showcases,這也是我經(jīng)常去的一個地方,在這里可以根據(jù)你的興趣、你關注的主題、你公司需要等等,選擇相應的主題,然后打開他們,就可以看到GitHub為你精選的項目了,作為參考學習。比如VR這個主題 https://github.com/showcases/virtual-reality。
Trending
Trending,https://github.com/trending,GitHub上的風云榜,在這里你可以看到最近一天、一周、一個月哪些項目和開發(fā)者最流行,這基本上是我每天必看的,從這里可以找到新趨勢、新技術以及新的基友。推薦每天必看,當今日頭條新聞看,善用Trending,不要錯過遺憾。
Issues
在GitHub中,基友們之間的交互大部分都是通過issues(問題),這類似于提問題,討論。每一個項目都有,你可以針對該項目打開一個issues,提出你的問題、和基友們討論等等,就和一個小論壇一樣。issues支持MarkDown語法,可以在線編輯,所以非常方便,有不少基友們用他來在GitHub上直接寫博客,教程等。想和其他基友們交流,從一個issues開始吧。
Fork
這也是GitHub上的概念,意思是建立一個新的分支,比如你Fork了一個項目,就會在你的項目列表里創(chuàng)建一個同名的項目,也即是一個分支(和Git的分支不同),因為是你的所以你擁有它的所有權限,可以任意修改,刪除,添加等等。
在貢獻代碼pull request之前,我們必須要先Fork,這樣你才可以有權限修改這個項目,修改完成后,再提交發(fā)起pull request就可以提交你的貢獻了。
同時Fork也是保存一個項目好辦法,因為它是一個完全復制的分支,和原來的項目沒有太大關系,所以即使原項目的代碼內(nèi)容被刪除,你的還存在。
Pull requests
Pull requests,我們親切的稱為PR,這是在GitHub上代碼貢獻的流程,不管是你給別的項目貢獻代碼,還是別的人給你的項目貢獻代碼。一個完成的貢獻代碼的流程如下:
- Fork別人的項目,因為你是不能直接別人的項目的。
- Fork后就是自己項目了,和操作自己的項目一樣,編寫代碼等,然后提交。
- 提交后,發(fā)起pull request給原項目,這時候?qū)Ψ讲拍芸吹侥阖暙I的代碼。
- 原作者看到后,會Review你的貢獻等,如果沒有沒問題,就會接受Merge原項目中了。
- 這樣你的貢獻,就可以被更多的人使用到了。
如果你對一個項目有更好的想法,或者修復一個Bug等,就發(fā)起PR來貢獻吧,GitHub上偉大的項目都不是一個寫的,都是靠千千萬萬個貢獻者,這也是開源的意義所在,這也是軟件、甚至整個IT行業(yè)能這么高速發(fā)展的原因之一。
GitHub Pages
這是一個Github提供的靜態(tài)網(wǎng)頁服務,讓你可以為你的開源項目創(chuàng)建一個介紹網(wǎng)站,來介紹你的項目以及使用等等。除此之外,他還有一個好的用處,就是搭建自己的個人博客,具體請參考我以前的一篇博客 http://www.flysnow.org/2015/03/10/github-page-with-hexo.html ,這是介紹我自己通過該服務,使用Hexo搭建個人博客網(wǎng)站的經(jīng)驗。個人博客是一個平臺好的平臺,不僅可以讓你學習總結(jié),也可以讓你認識更多的朋友,為你的簡歷加分,如果沒有,趕緊搭建一個吧。
Integrations
Integrations是GitHub推出的開放平臺服務,可以讓其他第三方利用GitHub的開放能力,構(gòu)建一些開放工具或者平臺,幫助開發(fā)者更好的開發(fā)、構(gòu)建自己的項目,比如我們常用的Travis CI,可以幫我們持續(xù)構(gòu)建,發(fā)布我們的項目。更多關于Integrations的工具或者平臺,請到https://github.com/integrations 查找,有詳細分類,也可以篩選過濾,非常方便。
打造個人簡歷
再GitHub上,我們不僅可以學習,研究開源項目,貢獻以及討論,還可以利用GitHub為我們的簡歷加分。我在篩選簡歷的時候,尤其看中有GitHub的,作為一個程序員,如果連GitHub賬號都沒有,甚至都沒有聽說過,這是不可原諒的,也不是一個合格的程序員。
多在GitHub上活躍,研究優(yōu)秀的項目,多參與討論和貢獻,利用GitHub搭建自己的博客,然后把這些作為自己經(jīng)驗的一部分,寫在你的簡歷上,相信我,這會為你加很多分,讓你在應聘者中脫引而出,所以努力的把GitHub打造成自己的活簡歷吧。