GitHub簡介、倉庫的建立與維護
前面的文章介紹了Git的基本概念和用法,本文則是基於GitHub的一個實踐介紹,主要內容有:
- GitHub簡介
- 個人與組織
- 倉庫的建立與維護
- Fork與pull request
- 小結
GitHub簡介
GitHub是一個Git的遠端程式碼託管平臺,它除了提供程式碼託管外,還提供瞭如問題釋出、pull request、報表統計等功能,下圖為EFCore專案的貢獻者統計資訊:
GitHub提供了一整套遠端協作的解決方案,所以是開源專案的首選平臺,許多知名專案都託管在GitHub上。
GitHub可以免費的建立自己的開原始碼倉庫,同時有付費服務,如私有倉庫、GitHub的企業解決方案等。
個人與組織
GitHub中提供了個人倉庫和組織倉庫,分別適合個人開源專案以及組織開源專案。
個人倉庫主頁:
組織倉庫首頁:
建立組織:
填寫組織資訊:
倉庫的建立與維護
1.建立一個倉庫(個人和團隊倉庫建立類似,下圖是團隊倉庫)
2. 倉庫的維護:
針對每一個倉庫,GitHub提供了程式碼管理(Code)、問題管理(Issues)、拉請求(Pull Request)、專案管理(Projects)、百科(Wiki)、統計(Insights)、倉庫設定(Settings)功能,通過這些功能可以對程式碼倉庫進行維護:
Fork與Pull request
Fork和Pull request是GitHub上完成程式碼共享的核心功能,下面就介紹如何使用Fork和Pull Request完成程式碼貢獻:
1. 將貢獻目標倉庫Fork到自己的倉庫中:
2. 獲取Fork後的倉庫,獲取並對程式碼進行修改最後推送到遠端分支(直接使用master分支):
修改程式碼後將修改的內容推到遠端倉庫:
注:更多使用Git的內容參考:《好程式碼是管出來的——使用Git來管理原始碼》以及《好程式碼是管出來的——Git的分支工作流與Pull Request》。
3. 發起Pull Request:
建立新的pull request將會顯示以下資訊(程式碼由SelimTeam倉庫合併到yqszt的倉庫、程式碼是可合併的以及程式碼差異資訊):
當點選“Create Pull Request”按鈕後,該請求將會被建立。
4. 處理Pull Request:
yqszt/MyBlog庫擁有者,可以在pull request選項卡中看到相應的資訊並進行合併:
檔案差異:
合併Pull Request:
合併結果:
小結
本文介紹瞭如何使用GitHub來個人/團隊程式碼倉庫,對於一個GitHub倉庫來說除了提供基礎的程式碼版本管理功能以外還提供了問題管理、專案管理、百科、拉請求、資料統計等功能,倉庫的擁有者(開發者)可以使用GitHub進行專案管理、程式碼管理,還可以將相關知識通過百科進行釋出,以便於專案的受益者、貢獻者能夠快速獲得專案資訊,而貢獻者除了可以通過Wiki獲取資訊外,還可以Issue、Pull Request對專案提出疑問或進行貢獻,擁有者和貢獻者所有的溝通都可以通過Github來完成。
另外Github的fork與pull request實際上就是上一篇文章中提到的“整合管理者工作流”的實現,其中在對pull request的程式碼進行合併時,實際上還強制進行了程式碼審查,這種工作流模式即適合本地的開發團隊,也適合開發人員來自世界各地的開源專案。
從這些方面看來Github不再是一個簡單的Git遠端倉庫託管平臺,而是一個
分散式的軟體開發管理解決方案
。
PS:Github被微軟收購,今後Github又會與.Net生態圈擦出什麼樣的火花?拭目以待。