如果不想經(jīng)歷自己架設(shè) Git 服務(wù)器的麻煩,網(wǎng)絡(luò)上有幾個專業(yè)的倉庫托管服務(wù)可供選擇。這樣做有幾大優(yōu)點:托管賬戶的建立通常比較省時,方便項目的啟動,而且不涉及服務(wù)器的維護和監(jiān)控。即使內(nèi)部創(chuàng)建并運行著自己的服務(wù)器,同時為開源項目提供一個公共托管站點還是有好處的 — 讓開源社區(qū)更方便地找到該項目,并給予幫助。
目前,可供選擇的托管服務(wù)數(shù)量繁多,各有利弊。在 Git 官方 wiki 上的 Githosting 頁面有一個最新的托管服務(wù)列表:
https://git.wiki.kernel.org/index.php/GitHosting
由于本書無法全部一一介紹,而本人(譯注:指本書作者 Scott Chacon。)剛好在其中一家公司工作,所以接下來我們將會介紹如何在 GitHub 上建立新賬戶并啟動項目。至于其他托管服務(wù)大體也是這么一個過程,基本的想法都是差不多的。
GitHub 是目前為止最大的開源 Git 托管服務(wù),并且還是少數(shù)同時提供公共代碼和私有代碼托管服務(wù)的站點之一,所以你可以在上面同時保存開源和商業(yè)代碼。事實上,本書就是放在 GitHub 上合作編著的。(譯注:本書的翻譯也是放在 GitHub 上廣泛協(xié)作的。)
GitHub 和大多數(shù)的代碼托管站點在處理項目命名空間的方式上略有不同。GitHub 的設(shè)計更側(cè)重于用戶,而不是完全基于項目。也就是說,如果我在 GitHub 上托管一個名為 grit 的項目的話,它的地址不會是 github.com/grit,而是按在用戶底下 github.com/shacon/grit (譯注:本書作者 Scott Chacon 在 GitHub 上的用戶名是 shacon。)。不存在所謂某個項目的官方版本,所以假如第一作者放棄了某個項目,它可以無縫轉(zhuǎn)移到其它用戶的名下。
GitHub 同時也是一個向使用私有倉庫的用戶收取費用的商業(yè)公司,但任何人都可以方便快捷地申請到一個免費賬戶,并在上面托管數(shù)量不限的開源項目。接下來我們快速介紹一下 GitHub 的基本使用。
首先注冊一個免費賬戶。訪問 "Plans and pricing"
頁面 https://github.com/pricing
并點擊 Free acount 里的 Sign Up 按鈕(見圖 4-2),進入注冊頁面。
圖 4-2. GitHub 服務(wù)簡介頁面
選擇一個系統(tǒng)中尚未使用的用戶名,提供一個與之相關(guān)聯(lián)的電郵地址,并輸入密碼(見圖 4-3):
圖 4-3. GitHub 用戶注冊表單
如果方便,現(xiàn)在就可以提供你的 SSH 公鑰。我們在前文的"小型安裝" 一節(jié)介紹過生成新公鑰的方法。把新生成的公鑰復(fù)制粘貼到 SSH Public Key 文本框中即可。要是對生成公鑰的步驟不太清楚,也可以點擊 "explain ssh keys"
鏈接,會顯示各個主流操作系統(tǒng)上完成該步驟的介紹。 點擊 "I agree,sign me up"
按鈕完成用戶注冊,并轉(zhuǎn)到該用戶的 dashboard 頁面(見圖 4-4):
圖 4-4. GitHub 的用戶面板
接下來就可以建立新倉庫了。
點擊用戶面板上倉庫旁邊的 "create a new one" 鏈接,顯示 Create a New Repository 的表單(見圖 4-5):
圖 4-5. 在 GitHub 上建立新倉庫
當然,項目名稱是必不可少的,此外也可以適當描述一下項目的情況或者給出官方站點的地址。然后點擊 "Create Repository"
按鈕,新倉庫就建立起來了(見圖 4-6):
圖 4-6. GitHub 上各個項目的概要信息
由于尚未提交代碼,點擊項目地址后 GitHub 會顯示一個簡要的指南,告訴你如何新建一個項目并推送上來,如何從現(xiàn)有項目推送,以及如何從一個公共的 Subversion 倉庫導入項目(見圖 4-7):
圖 4-7. 新倉庫指南
該指南和本書前文介紹的類似,對于新的項目,需要先在本地初始化為 Git 項目,添加要管理的文件并作首次提交:
$ git init
$ git add .
$ git commit -m 'initial commit'
然后在這個本地倉庫內(nèi)把 GitHub 添加為遠程倉庫,并推送 master 分支上來:
$ git remote add origin git@github.com:testinguser/iphone_project.git
$ git push origin master
現(xiàn)在該項目就托管在 GitHub 上了。你可以把它的 URL 分享給每位對此項目感興趣的人。本例的 URL 是 http://github.com/testinguser/iphone_project
。而在項目頁面的摘要部分,你會發(fā)現(xiàn)有兩個 Git URL 地址(見圖 4-8):
圖 4-8. 項目摘要中的公共 URL 和私有 URL
Public Clone URL 是一個公開的,只讀的 Git URL,任何人都可以通過它克隆該項目??梢噪S意散播這個 URL,比如發(fā)布到個人網(wǎng)站之類的地方等等。
Your Clone URL 是一個基于 SSH 協(xié)議的可讀可寫 URL,只有使用與上傳的 SSH 公鑰對應(yīng)的密鑰來連接時,才能通過它進行讀寫操作。其他用戶訪問該項目頁面時只能看到之前那個公共的 URL,看不到這個私有的 URL。
如果想把某個公共 Subversion
項目導入 Git,GitHub
可以幫忙。在指南的最后有一個指向?qū)?Subversion 頁面的鏈接。點擊它會看到一個表單,包含有關(guān)導入流程的信息以及一個用來粘貼公共 Subversion 項目連接的文本框(見圖 4-9):
圖 4-9. Subversion 導入界面
如果項目很大,采用非標準結(jié)構(gòu),或者是私有的,那就無法借助該工具實現(xiàn)導入。到第 7 章,我們會介紹如何手工導入復(fù)雜工程的具體方法。
現(xiàn)在把團隊里的其他人也加進來。如果 John,Josie 和Jessica
都在 GitHub 注冊了賬戶,要賦予他們對該倉庫的推送權(quán)限,可以把他們加為項目協(xié)作者。這樣他們就可以通過各自的公鑰訪問我的這個倉庫了。
點擊項目頁面上方的 "edit" 按鈕或者頂部的 Admin 標簽,進入該項目的管理頁面(見圖 4-10):
圖 4-10. GitHub 的項目管理頁面
為了給另一個用戶添加項目的寫權(quán)限,點擊 "Add another collaborator"
鏈接,出現(xiàn)一個用于輸入用戶名的表單。在輸入的同時,它會自動跳出一個符合條件的候選名單。找到正確用戶名之后,點 Add 按鈕,把該用戶設(shè)為項目協(xié)作者(見圖 4-11):
圖 4-11. 為項目添加協(xié)作者
添加完協(xié)作者之后,就可以在 Repository Collaborators 區(qū)域看到他們的名單(見圖 4-12):
圖 4-12. 項目協(xié)作者名單
如果要取消某人的訪問權(quán),點擊 "revoke" 即可取消他的推送權(quán)限。對于將來的項目,你可以從現(xiàn)有項目復(fù)制協(xié)作者名單,或者直接借用協(xié)作者群組。
在推送或從 Subversion 導入項目之后,你會看到一個類似圖 4-13 的項目主頁:
圖 4-13. GitHub 上的項目主頁
別人訪問你的項目時看到的就是這個頁面。它有若干導航標簽,Commits 標簽用于顯示提交歷史,最新的提交位于最上方,這和 git log 命令的輸出類似。Network 標簽展示所有派生了該項目并做出貢獻的用戶的關(guān)系圖譜。Downloads 標簽允許你上傳項目的二進制文件,提供下載該項目各個版本的 tar/zip 包。Wiki 標簽提供了一個用于撰寫文檔或其他項目相關(guān)信息的 wiki 站點。Graphs 標簽包含了一些可視化的項目信息與數(shù)據(jù)。默認打開的 Source 標簽頁面,則列出了該項目的目錄結(jié)構(gòu)和概要信息,并在下方自動展示 README 文件的內(nèi)容(如果該文件存在的話),此外還會顯示最近一次提交的相關(guān)信息。
如果要為一個自己沒有推送權(quán)限的項目貢獻代碼,GitHub 鼓勵使用派生(fork)。到那個感興趣的項目主頁上,點擊頁面上方的 "fork" 按鈕,GitHub 就會為你復(fù)制一份該項目的副本到你的倉庫中,這樣你就可以向自己的這個副本推送數(shù)據(jù)了。
采取這種辦法的好處是,項目擁有者不必忙于應(yīng)付賦予他人推送權(quán)限的工作。隨便誰都可以通過派生得到一個項目副本并在其中展開工作,事后只需要項目維護者將這些副本倉庫加為遠程倉庫,然后提取更新合并即可。
要派生一個項目,到原始項目的頁面(本例中是 mojombo/chronic)點擊 "fork" 按鈕(見圖 4-14):
圖 4-14. 點擊 "fork" 按鈕獲得任意項目的可寫副本
幾秒鐘之后,你將進入新建的項目頁面,會顯示該項目派生自哪一個項目(見圖 4-15):
圖 4-15. 派生后得到的項目副本
關(guān)于 GitHub 就先介紹這么多,能夠快速達成這些事情非常重要(譯注:門檻的降低和完成基本任務(wù)的簡單高效,對于推動開源項目的協(xié)作發(fā)展有著舉足輕重的意義。)。短短幾分鐘內(nèi),你就能創(chuàng)建一個新賬戶,添加一個項目并開始推送。如果項目是開源的,整個龐大的開發(fā)者社區(qū)都可以立即訪問它,提供各式各樣的幫助和貢獻。最起碼,這也是一種 Git 新手立即體驗嘗試 Git 的捷徑。
更多建議: