編者按:開發(fā)人員每天都要在工作中使用GitHub或其他基于Git的工具。 GitHub是面向開源及私有軟件項目的托管平臺。 那么什么是GitHub?其中都有哪些關(guān)鍵的概念?如何使用GitHub才能提高工作效率?
本文編譯自medium上原標(biāo)題為A developer’s introduction to GitHub的文章。
GitHub是一個擁有數(shù)十億行代碼的網(wǎng)站,每天有數(shù)百萬開發(fā)者聚集在一起,研究開源軟件中存在的問題。
簡而言之,它是為軟件開發(fā)人員構(gòu)建的平臺,是圍繞Git構(gòu)建的。
為什么選擇GitHub?
現(xiàn)在你知道了GitHub是什么,你可能會問為什么需要使用GitHub。
畢竟,GitHub由一家私人公司管理并且該公司通過托管代碼獲利。 那么為什么應(yīng)該使用GitHub而不是像BitBucket或GitLab這樣的平臺呢?
除個人喜好和技術(shù)原因外,還有一個重要原因:每個人都在使用GitHub,因此其網(wǎng)絡(luò)效應(yīng)不可小覷。
主要的代碼庫已經(jīng)隨著時間的推移從其他版本控制系統(tǒng)遷移到Git,因為它更加便捷,并且GitHub投入了大量的努力來滿足開源社區(qū)的需求。
所以今天,你在查找一些軟件庫時,99%的情況下會在GitHub上找到它。
除了開源代碼之外,許多開發(fā)人員還在GitHub上托管私有存儲庫,因為平臺很方便。
現(xiàn)在讓我們了解一下開發(fā)人員需要知道的有關(guān)Git的概念。
GitHub Issues
Github Issues是世界上最受歡迎的bug跟蹤系統(tǒng)之一。
項目的所有者可以利用它組織,標(biāo)記和將issue與里程碑關(guān)聯(lián)。
如果您在其他人管理的項目上打開某個issue,它將保持打開狀態(tài),直到您將其關(guān)閉(例如,如果您找到了問題所在)或者項目管理者關(guān)閉這個issue。
有時候你會得到一個明確的答案,而其他時候,這個issue將會被打開并標(biāo)記出一些分類信息。 然后開發(fā)人員可以回到這個issue來解決問題或根據(jù)反饋改進(jìn)代碼庫。
大多數(shù)開發(fā)人員不會免費管理在GitHub上發(fā)布的代碼,因此您不能期望即時回復(fù)。 但是一些開放源代碼庫由那些圍繞該代碼提供服務(wù)的公司發(fā)布,它們會提供具有更多功能的版本或者使用基于插件的系統(tǒng)。 這些公司已經(jīng)為開源項目付給開發(fā)人員工資。
社會編碼
幾年前,GitHub標(biāo)志出現(xiàn)了“社交編碼”。
這是什么意思,和GitHub有什么關(guān)系呢?
Follow
使用GitHub,您可以通過訪問用戶的個人資料并單擊“關(guān)注”,或者通過單擊軟件庫上的“觀看”按鈕來關(guān)注開發(fā)人員或軟件庫。
在這兩種情況下,活動都會顯示在您的dashboard中。關(guān)注用戶或軟件庫跟Twitter上的關(guān)注不一樣,你看不見人們說什么,而可以看到人們在做什么。
Star
GitHub的一大特色就是能夠為軟件庫加星標(biāo)。用戶可以通過這個操作將其他軟件庫加入到“已加星標(biāo)的軟件庫”列表中,這樣用戶可以關(guān)注自己感興趣的項目并發(fā)現(xiàn)類似的項目。
這也是最重要的評級機(jī)制之一,因為軟件庫的星星越多,它通常就越受歡迎和重要。它在搜索結(jié)果中也會位于更突出的位置。
重大項目可能有數(shù)萬顆星。
GitHub也有一個trending頁面,它會推薦在特定時間段內(nèi)(例如今天或本周或本月)獲得最多星星的軟件庫。
Fork
項目最后一個重要的網(wǎng)絡(luò)指標(biāo)是fork的數(shù)量。
這是GitHub如何工作的關(guān)鍵,因為fork是Pull Request(PR)的基礎(chǔ),這是一個更改提議。一個人可能會fork您的軟件庫,進(jìn)行一些更改,然后創(chuàng)建一個PR來要求您合并這些更改。
有時fork軟件庫的人可能永遠(yuǎn)不會要求你合并任何東西。他們可能會因為喜歡你的代碼而fork你的軟件庫,并在上面添加一些他們不想合并到原始軟件庫的東西。用戶還可以修復(fù)他們遇到的bug。
受歡迎=更好
總而言之,這些都是項目受歡迎程度的關(guān)鍵指標(biāo)。 除了上述指標(biāo)之外,最近一次提交的日期和作者參與issue跟蹤系統(tǒng)的信息也是衡量軟件庫或軟件可信度的標(biāo)準(zhǔn)之一。
PR(Pull Request)
在前一節(jié)中,我介紹了Pull Request(PR)是什么。 重申一下,一個人可能會fork你的軟件庫,做一些改變,然后創(chuàng)建一個PR來要求你合并這些改變。
一個項目可能有數(shù)百個PR,通常情況下,項目越受歡迎,它的PR越多,如React項目:
一旦一個人提交了PR請求,項目的核心維護(hù)者就會對其進(jìn)行審查。
根據(jù)請求范圍(更改次數(shù),受更改影響的事件數(shù)量或涉及到的代碼的復(fù)雜程度),維護(hù)人員可能需要不等的時間來確保更改與項目兼容。
一個項目可能有有關(guān)改進(jìn)的明確時間表。維護(hù)人員希望用戶用盡可能簡單的方式介紹PR中的體系結(jié)構(gòu)。
這就是說,PR并不總是被立馬接受,并且可能不會被接受。
在我上面的例子中,軟件庫中有一個一年半前的PR。這在所有項目中都會發(fā),很正常,可能是由于我上面提到的原因。
項目管理
除了issues(開發(fā)人員獲得用戶反饋的地方)外,GitHub界面還提供了少量項目管理功能。
其中之一是Projects。它在生態(tài)系統(tǒng)中是非常新的,也很少被使用,但它是幫助用戶組織需要完成的問題和工作的看板。
Wiki可以被用作文檔。另一個受歡迎的項目管理功能是里程碑。它是issue頁面的一部分,您可以將問題分配給特定的里程碑,可能是發(fā)布目標(biāo)。
說到發(fā)布,GitHub通過引入發(fā)布增強(qiáng)了Git的標(biāo)簽功能。
Git標(biāo)簽是特定commit的指針,如果完成時間一致,它可以幫助您回到之前版本的代碼,并且無需引用特定的commit。
GitHub發(fā)布版建立在Git標(biāo)簽的基礎(chǔ)上,代表代碼的完整版本,也可能代表代碼最終產(chǎn)品完整工作版本的Zip文件,發(fā)行說明和二進(jìn)制資產(chǎn)。
盡管可以通過編程創(chuàng)建Git標(biāo)簽(例如,使用命令行g(shù)it程序),但創(chuàng)建GitHub版本是手動過程,在GitHub UI上進(jìn)行。用戶可以利用GitHub創(chuàng)建一個新版本,并選擇你想應(yīng)用的標(biāo)簽。
比較commits
GitHub提供了很多處理代碼的工具。
您可能最希望做的事情之一是將一個分支與另一個分支進(jìn)行比較。 或者您可能希望將最新的commit與您當(dāng)前使用的版本進(jìn)行比較,以便隨時查看更改。
用戶可以利用GitHub比較視圖執(zhí)行此操作:只需在軟件庫名稱末尾添加/compare即可。
例如,
https://github.com/facebook/react/compare
在下圖中,我將最新的React v15.x與最新v16.0.0-rc版本進(jìn)行了比較,方便大家了解更改的內(nèi)容。
該視圖向您展示了兩個版本(或標(biāo)簽或commits)之間的不同以及實際差異。
Webhooks和服務(wù)
GitHub提供了許多有助于開發(fā)人員工作流程的功能,例如webhook和服務(wù)。
Webhooks
當(dāng)軟件庫中出現(xiàn)特定問題時,Webhook可以觸發(fā)外部服務(wù),例如,推送代碼時,創(chuàng)建分支或刪除標(biāo)簽。
當(dāng)問題發(fā)生時,GitHub會給URL發(fā)送POST請求。
當(dāng)我們從本地計算機(jī)推送更新時,此功能能ping遠(yuǎn)程服務(wù)器以從GitHub獲取最新代碼。
服務(wù)
GitHub服務(wù)和新的GitHub應(yīng)用程序是第三方集成程序,可改善開發(fā)者的體驗或為用戶提供服務(wù)。
例如,您可以設(shè)置一個測試運行器,這樣每次TravisCI推送新commits時,它可以自動運行測試。
您可以設(shè)置Continuous Integration來使用CircleCI。您也可以創(chuàng)建一個Codeclimate集成程序來分析代碼并創(chuàng)建“Technical Debt”報告和測試覆蓋率。
小結(jié)
GitHub是一個了不起的工具和服務(wù)平臺,是當(dāng)今開發(fā)人員可以利用的真正神器。本教程只是入門級,但在GitHub上工作是不容錯過的。