<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 1.1\. 什么是GitHub GitHub(網址?[](https://github.com/)[https://github.com/](https://github.com/))是一個面向開源及私有軟件項目的托管平臺,因為只支持Git作為唯一的版本庫格式進行托管,故名GitHub。 GitHub的注冊用戶已經超過百萬[[1]](https://github.com/blog/936-one-million),托管的版本庫數量已超三百萬,其中不乏知名的開源項目,如:Ruby on Rails[[2]](https://github.com/rails/rails)、Hibernate[[3]](https://github.com/hibernate)、phpBB[[4]](https://github.com/phpbb/phpbb3)、jQuery[[5]](https://github.com/jquery/jquery)、Prototype[[6]](https://github.com/sstephenson/prototype)、Homebrew[[7]](https://github.com/mxcl/homebrew)等。 GitHub于2008年4月10日正式發布[[8]](https://github.com/blog/40-we-launched),相比始于1999年的SourceForge[[9]](http://sourceforge.net/)和2005年的GoogleCode[[10]](http://code.google.com/),GitHub后來者居上。以2011年的數據從代碼提交數量上看,GitHub已經超越其前輩[[11]](http://www.slideshare.net/sogrady/survival-of-the-forges),如圖1-1所示。 [![../images/survival-of-the-forges.png](http://www.worldhello.net/gotgithub/images/survival-of-the-forges.png)](https://box.kancloud.cn/2015-07-09_559dce78adf37.png) 圖1-1:開源項目托管平臺提交數量對照 對于一個開源項目,從開發角度講大體上分為兩類人群,一類稱為核心開發團隊,他們可以向保存源代碼的版本庫提交,即對源代碼的修改具有最終的決定權。另外一類稱為貢獻者,他們不屬于核心開發團隊,雖然也能看到源代碼,但無權向版本庫提交修改。 采用傳統的集中式版本控制系統(如SVN)的開源項目,這兩個群體的用戶體驗都不是太好。如圖1-2所示,項目的貢獻者(非核心成員)很不“高興”,因為他們即便有修改源代碼的能力和渴望,也不能直接向版本庫提交,要想成為提交者需要一個很長的建立信任的過程。然而即便是核心開發團隊的成員,體驗也不是太好,因為凡是涉及到版本庫的操作(檢入、檢出、查看日志等)都需要在聯網的狀態下進行,網絡帶寬對用戶體驗影響相當大。 [![../images/cvcs-model.png](http://www.worldhello.net/gotgithub/images/cvcs-model.png)](https://box.kancloud.cn/2015-07-09_559dce7bef014.png) 圖1-2:使用集中式版本控制系統 Git等分布式版本控制系統的出現,徹底顛覆了原有代碼管理的組織模式。使用Git,不再依賴唯一的、集中式的版本庫,而是每個開發者本地都擁有一份完整的版本庫。Git并不排斥集中式的使用模式,但更傾向于將集中式版本庫稱為共享版本庫。核心開發團隊的成員和貢獻者(非核心成員)都可以從共享版本庫克隆一份本地版本庫,但只有核心團隊成員才可以將自己本地版本庫的提交推送到共享版本庫上。如圖1-3所示。 [![../images/dvcs-model.png](http://www.worldhello.net/gotgithub/images/dvcs-model.png)](https://box.kancloud.cn/2015-07-09_559dce87daaf1.png) 圖1-3:使用分布式版本控制系統 使用Git做版本控制(如圖1-3所示),核心開發團隊非常“高興”,因為他們和共享版本庫之間不必一直保持連接狀態,諸如查看日志、提交、創建分支等幾乎全部操作都(脫離網絡)在本地的版本庫中完成。項目貢獻者(非核心成員)也不再那么沮喪,因為版本庫人人皆可更改(當然是對本地版本庫而言)。稍微讓貢獻者感到困難的就是如何將自己對項目的改進被核心開發團隊所了解并接納。Git提供了多種途徑,一個方法是先用git?format-patch命令將本地提交轉換為補丁文件或補丁文件序列,再通過郵件發送給核心開發團隊。另外一個辦法就是搭建一個自己專有的共享版本庫,通過郵件創建一個拉拽請求(Pull Request),讓核心團隊的開發者到自己的版本庫來抓取(Pull)。 GitHub的出現進一步推動了Git的普及,簡化了版本控制的管理和操作流程,為開發者提供了更好的交流平臺。如圖1-4所示。 [![../images/github-model.png](http://www.worldhello.net/gotgithub/images/github-model.png)](https://box.kancloud.cn/2015-07-09_559dce8da565d.png) 圖1-4:GitHub的協同模式 使用GitHub,無論是項目的核心開發團隊,還是普通的項目貢獻者都工作得非常“愉快”。創建項目變得非常輕松,創建者只需在GitHub上點擊一下鼠標即可創建一個新版本庫,通過簡單的Web操作即可完成項目授權進而組建項目核心團隊。在GitHub中,非核心團隊成員參與項目也很容易。先找到自己希望參與的項目,然后只需在Web上點擊一下鼠標即可在自己的托管空間下創建一個派生(fork)的項目,并對派生項目的版本庫具有讀寫的完全權限,就好像這個項目原本就是由自己創立的那樣。當貢獻者完成開發并向自己派生的版本庫推送后,可以通過GitHub的Web界面向項目的核心開發團隊發送一個Pull Request,請求審核。項目的核心團隊收到Pull Request后審核代碼,審核通過后可以直接通過Web界面執行合并操作接納貢獻者的提交。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看