開發人員天天都要在工做中使用GitHub或其餘基於Git的工具。 GitHub是面向開源及私有軟件項目的託管平臺。 那麼什麼是GitHub?其中都有哪些關鍵的概念?如何使用GitHub才能提升工做效率?git
本文編譯自medium上原標題爲A developer’s introduction to GitHub的文章。web
GitHub是一個擁有數十億行代碼的網站,天天有數百萬開發者彙集在一塊兒,研究開源軟件中存在的問題。編程
簡而言之,它是爲軟件開發人員構建的平臺,是圍繞Git構建的。服務器
爲何選擇GitHub?網絡
如今你知道了GitHub是什麼,你可能會問爲何須要使用GitHub。併發
畢竟,GitHub由一傢俬人公司管理而且該公司經過託管代碼獲利。 那麼爲何應該使用GitHub而不是像BitBucket或GitLab這樣的平臺呢?ide
除我的喜愛和技術緣由外,還有一個重要緣由:每一個人都在使用GitHub,所以其網絡效應不可小覷。工具
主要的代碼庫已經隨着時間的推移從其餘版本控制系統遷移到Git,由於它更加便捷,而且GitHub投入了大量的努力來知足開源社區的需求。測試
因此今天,你在查找一些軟件庫時,99%的狀況下會在GitHub上找到它。網站
除了開源代碼以外,許多開發人員還在GitHub上託管私有存儲庫,由於平臺很方便。
如今讓咱們瞭解一下開發人員須要知道的有關Git的概念。
GitHub Issues
Github Issues是世界上最受歡迎的bug跟蹤系統之一。
項目的全部者能夠利用它組織,標記和將issue與里程碑關聯。
若是您在其餘人管理的項目上打開某個issue,它將保持打開狀態,直到您將其關閉(例如,若是您找到了問題所在)或者項目管理者關閉這個issue。
有時候你會獲得一個明確的答案,而其餘時候,這個issue將會被打開並標記出一些分類信息。 而後開發人員能夠回到這個issue來解決問題或根據反饋改進代碼庫。
大多數開發人員不會免費管理在GitHub上發佈的代碼,所以您不能指望即時回覆。 可是一些開放源代碼庫由那些圍繞該代碼提供服務的公司發佈,它們會提供具備更多功能的版本或者使用基於插件的系統。 這些公司已經爲開源項目付給開發人員工資。
社會編碼
幾年前,GitHub標誌出現了「社交編碼」。
這是什麼意思,和GitHub有什麼關係呢?
Follow
使用GitHub,您能夠經過訪問用戶的我的資料並單擊「關注」,或者經過單擊軟件庫上的「觀看」按鈕來關注開發人員或軟件庫。
在這兩種狀況下,活動都會顯示在您的dashboard中。關注用戶或軟件庫跟Twitter上的關注不同,你看不見人們說什麼,而能夠看到人們在作什麼。
Star
GitHub的一大特點就是可以爲軟件庫加星標。用戶能夠經過這個操做將其餘軟件庫加入到「已加星標的軟件庫」列表中,這樣用戶能夠關注本身感興趣的項目並發現相似的項目。
這也是最重要的評級機制之一,由於軟件庫的星星越多,它一般就越受歡迎和重要。它在搜索結果中也會位於更突出的位置。
重大項目可能有數萬顆星。
GitHub也有一個trending頁面,它會推薦在特定時間段內(例現在天或本週或本月)得到最多星星的軟件庫。
Fork
項目最後一個重要的網絡指標是fork的數量。
這是GitHub如何工做的關鍵,由於fork是Pull Request(PR)的基礎,這是一個更改提議。一我的可能會fork您的軟件庫,進行一些更改,而後建立一個PR來要求您合併這些更改。
有時fork軟件庫的人可能永遠不會要求你合併任何東西。他們可能會由於喜歡你的代碼而fork你的軟件庫,並在上面添加一些他們不想合併到原始軟件庫的東西。用戶還能夠修復他們遇到的bug。
受歡迎=更好
總而言之,這些都是項目受歡迎程度的關鍵指標。 除了上述指標以外,最近一次提交的日期和做者參與issue跟蹤系統的信息也是衡量軟件庫或軟件可信度的標準之一。
PR(Pull Request)
在前一節中,我介紹了Pull Request(PR)是什麼。 重申一下,一我的可能會fork你的軟件庫,作一些改變,而後建立一個PR來要求你合併這些改變。
一個項目可能有數百個PR,一般狀況下,項目越受歡迎,它的PR越多,如React項目:
一旦一我的提交了PR請求,項目的核心維護者就會對其進行審查。
根據請求範圍(更改次數,受更改影響的事件數量或涉及到的代碼的複雜程度),維護人員可能須要不等的時間來確保更改與項目兼容。
一個項目可能有有關改進的明確時間表。維護人員但願用戶用盡量簡單的方式介紹PR中的體系結構。
這就是說,PR並不老是被立馬接受,而且可能不會被接受。
在我上面的例子中,軟件庫中有一個一年半前的PR。這在全部項目中都會發,很正常,多是因爲我上面提到的緣由。
項目管理
除了issues(開發人員得到用戶反饋的地方)外,GitHub界面還提供了少許項目管理功能。
其中之一是Projects。它在生態系統中是很是新的,也不多被使用,但它是幫助用戶組織須要完成的問題和工做的看板。
Wiki能夠被用做文檔。另外一個受歡迎的項目管理功能是里程碑。它是issue頁面的一部分,您能夠將問題分配給特定的里程碑,多是發佈目標。
說到發佈,GitHub經過引入發佈加強了Git的標籤功能。
Git標籤是特定commit的指針,若是完成時間一致,它能夠幫助您回到以前版本的代碼,而且無需引用特定的commit。
GitHub發佈版創建在Git標籤的基礎上,表明代碼的完整版本,也可能表明代碼最終產品完整工做版本的Zip文件,發行說明和二進制資產。
儘管能夠經過編程建立Git標籤(例如,使用命令行git程序),但建立GitHub版本是手動過程,在GitHub UI上進行。用戶能夠利用GitHub建立一個新版本,並選擇你想應用的標籤。
比較commits
GitHub提供了不少處理代碼的工具。
您可能最但願作的事情之一是將一個分支與另外一個分支進行比較。 或者您可能但願將最新的commit與您當前使用的版本進行比較,以便隨時查看更改。
用戶能夠利用GitHub比較視圖執行此操做:只需在軟件庫名稱末尾添加/compare便可。
例如,
在下圖中,我將最新的React v15.x與最新v16.0.0-rc版本進行了比較,方便你們瞭解更改的內容。
該視圖向您展現了兩個版本(或標籤或commits)之間的不一樣以及實際差別。
Webhooks和服務
GitHub提供了許多有助於開發人員工做流程的功能,例如webhook和服務。
Webhooks
當軟件庫中出現特定問題時,Webhook能夠觸發外部服務,例如,推送代碼時,建立分支或刪除標籤。
當問題發生時,GitHub會給URL發送POST請求。
當咱們從本地計算機推送更新時,此功能能ping遠程服務器以從GitHub獲取最新代碼。
服務
GitHub服務和新的GitHub應用程序是第三方集成程序,可改善開發者的體驗或爲用戶提供服務。
例如,您能夠設置一個測試運行器,這樣每次TravisCI推送新commits時,它能夠自動運行測試。
您能夠設置Continuous Integration來使用CircleCI。您也能夠建立一個Codeclimate集成程序來分析代碼並建立「Technical Debt」報告和測試覆蓋率。
小結
GitHub是一個了不得的工具和服務平臺,是當今開發人員能夠利用的真正神器。本教程只是入門級,但在GitHub上工做是不容錯過的。
原文做者:Flavio Copes
原文連接:
編譯組出品。編輯:郝鵬程