Git 和 GitHub學習資料

jopen 10年前發布 | 30K 次閱讀 Git 版本控制系統

GitHub(網址 https://github.com/)是一個面向開源及私有軟件項目的托管平臺,因為只支持Git作為唯一的版本庫格式進行托管,故名GitHub。

GitHub的注冊用戶已經超過百萬[1],托管的版本庫數量已超三百萬,其中不乏知名的開源項目,如:Ruby on Rails[2]、Hibernate[3]、phpBB[4]、jQuery[5]、Prototype[6]、Homebrew[7]等。

GitHub于2008年4月10日正式發布[8],相比始于1999年的SourceForge[9]和2005年的GoogleCode[10],GitHub后來者居上。以2011年的數據從代碼提交數量上看,GitHub已經超越其前輩[11],如圖1-1所示。

Git 和 GitHub學習資料

圖1-1:開源項目托管平臺提交數量對照

對于一個開源項目,從開發角度講大體上分為兩類人群,一類稱為核心開發團隊,他們可以向保存源代碼的版本庫提交,即對源代碼的修改具有最終的決定權。另外一類稱為貢獻者,他們不屬于核心開發團隊,雖然也能看到源代碼,但無權向版本庫提交修改。

采用傳統的集中式版本控制系統(如SVN)的開源項目,這兩個群體的用戶體驗都不是太好。如圖1-2所示,項目的 貢獻者(非核心成員)很不“高興”,因為他們即便有修改源代碼的能力和渴望,也不能直接向版本庫提交,要想成為提交者需要一個很長的建立信任的過程。然而 即便是核心開發團隊的成員,體驗也不是太好,因為凡是涉及到版本庫的操作(檢入、檢出、查看日志等)都需要在聯網的狀態下進行,網絡帶寬對用戶體驗影響相 當大。

Git 和 GitHub學習資料

圖1-2:使用集中式版本控制系統

Git等分布式版本控制系統的出現,徹底顛覆了原有代碼管理的組織模式。使用Git,不再依賴唯一的、集中式的版 本庫,而是每個開發者本地都擁有一份完整的版本庫。Git并不排斥集中式的使用模式,但更傾向于將集中式版本庫稱為共享版本庫。核心開發團隊的成員和貢獻 者(非核心成員)都可以從共享版本庫克隆一份本地版本庫,但只有核心團隊成員才可以將自己本地版本庫的提交推送到共享版本庫上。如圖1-3所示。

Git 和 GitHub學習資料

圖1-3:使用分布式版本控制系統

使用Git做版本控制(如圖1-3所示),核心開發團隊非常“高興”,因為他們和共享版本庫之間不必一直保持連接狀態,諸如查看日志、提交、創建分 支等幾乎全部操作都(脫離網絡)在本地的版本庫中完成。項目貢獻者(非核心成員)也不再那么沮喪,因為版本庫人人皆可更改(當然是對本地版本庫而言)。稍 微讓貢獻者感到困難的就是如何將自己對項目的改進被核心開發團隊所了解并接納。Git提供了多種途徑,一個方法是先用git format-patch命令將本地提交轉換為補丁文件或補丁文件序列,再通過郵件發送給核心開發團隊。另外一個辦法就是搭建一個自己專有的共享版本庫,通過郵件創建一個拉拽請求(Pull Request),讓核心團隊的開發者到自己的版本庫來抓取(Pull)。

GitHub的出現進一步推動了Git的普及,簡化了版本控制的管理和操作流程,為開發者提供了更好的交流平臺。如圖1-4所示。

Git 和 GitHub學習資料

圖1-4:GitHub的協同模式

使用GitHub,無論是項目的核心開發團隊,還是普通的項目貢獻者都工作得非常“愉快”。創建項目變得非常輕松,創建者只需在GitHub上點擊 一下鼠標即可創建一個新版本庫,通過簡單的Web操作即可完成項目授權進而組建項目核心團隊。在GitHub中,非核心團隊成員參與項目也很容易。先找到 自己希望參與的項目,然后只需在Web上點擊一下鼠標即可在自己的托管空間下創建一個派生(fork)的項目,并對派生項目的版本庫具有讀寫的完全權限, 就好像這個項目原本就是由自己創立的那樣。當貢獻者完成開發并向自己派生的版本庫推送后,可以通過GitHub的Web界面向項目的核心開發團隊發送一個 Pull Request,請求審核。項目的核心團隊收到Pull Request后審核代碼,審核通過后可以直接通過Web界面執行合并操作接納貢獻者的提交。


[1] https://github.com/blog/936-one-million
[2] https://github.com/rails/rails
[3] https://github.com/hibernate
[4] https://github.com/phpbb/phpbb3
[5] https://github.com/jquery/jquery
[6] https://github.com/sstephenson/prototype
[7] https://github.com/mxcl/homebrew
[8] https://github.com/blog/40-we-launched
[9] http://sourceforge.net/
[10] http://code.google.com/
[11] http://www.slideshare.net/sogrady/survival-of-the-forges

關于Git的資料實在太多了,光是圖書就有好幾本,學習無非熟能生巧,多看,多用,這里把一些資料以鏈接的形式給出。

1.Git Community Book 中文版

點擊打開鏈接

2.Git 參考手冊

3.Pro Git

4.GoGit

5.Try Git

6.Git簡易指南

7.Git-Flow備忘清單

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!