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都是哪幾個。
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,這是一個開源的學習代碼和編程的非營利社區,裡面有很多免費的課程。其次是twitter推出的前端開發框架bootstrap,非常流行;然後是一個免費的編程書籍收集Repo,裡面有很多免費的電子書籍,可以點擊學習;最後值得一提的是非常流行的awesome系列,他是一個個系列合集,裡面又包含了你能想到的其他細分分類的awesome系列,比如java、android、微信小程序的等,這是一個匯總的資料項目,學習必用。
Organization相比我們個人,在Github也有Organization(組織)的概念,這通常代表一個公司,或者一個團體、或者一個非盈利組織,它是多個人的集合,通常用於協作貢獻、交流開發、管理等。
比如著名的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
ShowcasesShowcases,是GitHub根據你感興趣的主題,做的一個展示,這裡有VR(虛擬實境),機器學習等等主題,地址是 https://github.com/showcases,這也是我經常去的一個地方,在這裡可以根據你的興趣、你關注的主題、你公司需要等等,選擇相應的主題,然後打開他們,就可以看到GitHub為你精選的項目了,作為參考學習。比如VR這個主題 https://github.com/showcases/virtual-reality。
TrendingTrending,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 requestsPull requests,我們親切的稱為PR,這是在GitHub上代碼貢獻的流程,不管是你給別的項目貢獻代碼,還是別的人給你的項目貢獻代碼。一個完成的貢獻代碼的流程如下:
Fork別人的項目,因為你是不能直接別人的項目的。
Fork後就是自己項目了,和操作自己的項目一樣,編寫代碼等,然後提交。
提交後,發起pull request給原項目,這時候對方才能看到你貢獻的代碼。
原作者看到後,會Review你的貢獻等,如果沒有沒問題,就會接受Merge原項目中了。
這樣你的貢獻,就可以被更多的人使用到了。
如果你對一個項目有更好的想法,或者修復一個Bug等,就發起PR來貢獻吧,GitHub上偉大的項目都不是一個寫的,都是靠千千萬萬個貢獻者,這也是開源的意義所在,這也是軟體、甚至整個IT行業能這麼高速發展的原因之一。
GitHub Pages這是一個Github提供的靜態網頁服務,讓你可以為你的開源項目創建一個介紹網站,來介紹你的項目以及使用等等。除此之外,他還有一個好的用處,就是搭建自己的個人博客,具體請參考我以前的一篇博客 http://www.flysnow.org/2015/03/10/github-page-with-hexo.html ,這是介紹我自己通過該服務,使用Hexo搭建個人博客網站的經驗。個人博客是一個平臺好的平臺,不僅可以讓你學習總結,也可以讓你認識更多的朋友,為你的簡歷加分,如果沒有,趕緊搭建一個吧。
IntegrationsIntegrations是GitHub推出的開放平臺服務,可以讓其他第三方利用GitHub的開放能力,構建一些開放工具或者平臺,幫助開發者更好的開發、構建自己的項目,比如我們常用的Travis CI,可以幫我們持續構建,發布我們的項目。更多關於Integrations的工具或者平臺,請到https://github.com/integrations 查找,有詳細分類,也可以篩選過濾,非常方便。
打造個人簡歷再GitHub上,我們不僅可以學習,研究開源項目,貢獻以及討論,還可以利用GitHub為我們的簡歷加分。我在篩選簡歷的時候,尤其看中有GitHub的,作為一個程式設計師,如果連GitHub帳號都沒有,甚至都沒有聽說過,這是不可原諒的,也不是一個合格的程式設計師。
多在GitHub上活躍,研究優秀的項目,多參與討論和貢獻,利用GitHub搭建自己的博客,然後把這些作為自己經驗的一部分,寫在你的簡歷上,相信我,這會為你加很多分,讓你在應聘者中脫引而出,所以努力的把GitHub打造成自己的活簡歷吧。