Git 托管服務(wù)

2018-09-27 15:42 更新

如果不想經(jīng)歷自己架設(shè) Git 服務(wù)器的麻煩,網(wǎng)絡(luò)上有幾個(gè)專業(yè)的倉庫托管服務(wù)可供選擇。這樣做有幾大優(yōu)點(diǎn):托管賬戶的建立通常比較省時(shí),方便項(xiàng)目的啟動(dòng),而且不涉及服務(wù)器的維護(hù)和監(jiān)控。即使內(nèi)部創(chuàng)建并運(yùn)行著自己的服務(wù)器,同時(shí)為開源項(xiàng)目提供一個(gè)公共托管站點(diǎn)還是有好處的 — 讓開源社區(qū)更方便地找到該項(xiàng)目,并給予幫助。

目前,可供選擇的托管服務(wù)數(shù)量繁多,各有利弊。在 Git 官方 wiki 上的 Githosting 頁面有一個(gè)最新的托管服務(wù)列表:

https://git.wiki.kernel.org/index.php/GitHosting

由于本書無法全部一一介紹,而本人(譯注:指本書作者 Scott Chacon。)剛好在其中一家公司工作,所以接下來我們將會介紹如何在 GitHub 上建立新賬戶并啟動(dòng)項(xiàng)目。至于其他托管服務(wù)大體也是這么一個(gè)過程,基本的想法都是差不多的。

GitHub 是目前為止最大的開源 Git 托管服務(wù),并且還是少數(shù)同時(shí)提供公共代碼和私有代碼托管服務(wù)的站點(diǎn)之一,所以你可以在上面同時(shí)保存開源和商業(yè)代碼。事實(shí)上,本書就是放在 GitHub 上合作編著的。(譯注:本書的翻譯也是放在 GitHub 上廣泛協(xié)作的。)

GitHub

GitHub 和大多數(shù)的代碼托管站點(diǎn)在處理項(xiàng)目命名空間的方式上略有不同。GitHub 的設(shè)計(jì)更側(cè)重于用戶,而不是完全基于項(xiàng)目。也就是說,如果我在 GitHub 上托管一個(gè)名為 grit 的項(xiàng)目的話,它的地址不會是 github.com/grit,而是按在用戶底下 github.com/shacon/grit (譯注:本書作者 Scott Chacon 在 GitHub 上的用戶名是 shacon。)。不存在所謂某個(gè)項(xiàng)目的官方版本,所以假如第一作者放棄了某個(gè)項(xiàng)目,它可以無縫轉(zhuǎn)移到其它用戶的名下。

GitHub 同時(shí)也是一個(gè)向使用私有倉庫的用戶收取費(fèi)用的商業(yè)公司,但任何人都可以方便快捷地申請到一個(gè)免費(fèi)賬戶,并在上面托管數(shù)量不限的開源項(xiàng)目。接下來我們快速介紹一下 GitHub 的基本使用。

建立新賬戶

首先注冊一個(gè)免費(fèi)賬戶。訪問 "Plans and pricing"頁面 https://github.com/pricing 并點(diǎn)擊 Free acount 里的 Sign Up 按鈕(見圖 4-2),進(jìn)入注冊頁面。

2015-05-19/555ad7e08c884

圖 4-2. GitHub 服務(wù)簡介頁面

選擇一個(gè)系統(tǒng)中尚未使用的用戶名,提供一個(gè)與之相關(guān)聯(lián)的電郵地址,并輸入密碼(見圖 4-3):

2015-05-19/555ad7fa995b2

圖 4-3. GitHub 用戶注冊表單

如果方便,現(xiàn)在就可以提供你的 SSH 公鑰。我們在前文的"小型安裝" 一節(jié)介紹過生成新公鑰的方法。把新生成的公鑰復(fù)制粘貼到 SSH Public Key 文本框中即可。要是對生成公鑰的步驟不太清楚,也可以點(diǎn)擊 "explain ssh keys" 鏈接,會顯示各個(gè)主流操作系統(tǒng)上完成該步驟的介紹。 點(diǎn)擊 "I agree,sign me up"按鈕完成用戶注冊,并轉(zhuǎn)到該用戶的 dashboard 頁面(見圖 4-4):

2015-05-19/555ad81448420

圖 4-4. GitHub 的用戶面板

接下來就可以建立新倉庫了。

建立新倉庫

點(diǎn)擊用戶面板上倉庫旁邊的 "create a new one" 鏈接,顯示 Create a New Repository 的表單(見圖 4-5):

2015-05-19/555ad82c02134

圖 4-5. 在 GitHub 上建立新倉庫

當(dāng)然,項(xiàng)目名稱是必不可少的,此外也可以適當(dāng)描述一下項(xiàng)目的情況或者給出官方站點(diǎn)的地址。然后點(diǎn)擊 "Create Repository" 按鈕,新倉庫就建立起來了(見圖 4-6):

2015-05-19/555ad8359ff23

圖 4-6. GitHub 上各個(gè)項(xiàng)目的概要信息

由于尚未提交代碼,點(diǎn)擊項(xiàng)目地址后 GitHub 會顯示一個(gè)簡要的指南,告訴你如何新建一個(gè)項(xiàng)目并推送上來,如何從現(xiàn)有項(xiàng)目推送,以及如何從一個(gè)公共的 Subversion 倉庫導(dǎo)入項(xiàng)目(見圖 4-7):

2015-05-19/555ad83ec5bf2

圖 4-7. 新倉庫指南

該指南和本書前文介紹的類似,對于新的項(xiàng)目,需要先在本地初始化為 Git 項(xiàng)目,添加要管理的文件并作首次提交:

$ git init
$ git add .
$ git commit -m 'initial commit'

然后在這個(gè)本地倉庫內(nèi)把 GitHub 添加為遠(yuǎn)程倉庫,并推送 master 分支上來:

$ git remote add origin git@github.com:testinguser/iphone_project.git
$ git push origin master

現(xiàn)在該項(xiàng)目就托管在 GitHub 上了。你可以把它的 URL 分享給每位對此項(xiàng)目感興趣的人。本例的 URL 是 http://github.com/testinguser/iphone_project。而在項(xiàng)目頁面的摘要部分,你會發(fā)現(xiàn)有兩個(gè) Git URL 地址(見圖 4-8):

2015-05-19/555ad859703a5

圖 4-8. 項(xiàng)目摘要中的公共 URL 和私有 URL

Public Clone URL 是一個(gè)公開的,只讀的 Git URL,任何人都可以通過它克隆該項(xiàng)目??梢噪S意散播這個(gè) URL,比如發(fā)布到個(gè)人網(wǎng)站之類的地方等等。

Your Clone URL 是一個(gè)基于 SSH 協(xié)議的可讀可寫 URL,只有使用與上傳的 SSH 公鑰對應(yīng)的密鑰來連接時(shí),才能通過它進(jìn)行讀寫操作。其他用戶訪問該項(xiàng)目頁面時(shí)只能看到之前那個(gè)公共的 URL,看不到這個(gè)私有的 URL。

從 Subversion 導(dǎo)入項(xiàng)目

如果想把某個(gè)公共 Subversion項(xiàng)目導(dǎo)入 Git,GitHub可以幫忙。在指南的最后有一個(gè)指向?qū)?Subversion 頁面的鏈接。點(diǎn)擊它會看到一個(gè)表單,包含有關(guān)導(dǎo)入流程的信息以及一個(gè)用來粘貼公共 Subversion 項(xiàng)目連接的文本框(見圖 4-9):

2015-05-19/555ad86be57ac

圖 4-9. Subversion 導(dǎo)入界面

如果項(xiàng)目很大,采用非標(biāo)準(zhǔn)結(jié)構(gòu),或者是私有的,那就無法借助該工具實(shí)現(xiàn)導(dǎo)入。到第 7 章,我們會介紹如何手工導(dǎo)入復(fù)雜工程的具體方法。

添加協(xié)作開發(fā)者

現(xiàn)在把團(tuán)隊(duì)里的其他人也加進(jìn)來。如果 John,Josie 和Jessica都在 GitHub 注冊了賬戶,要賦予他們對該倉庫的推送權(quán)限,可以把他們加為項(xiàng)目協(xié)作者。這樣他們就可以通過各自的公鑰訪問我的這個(gè)倉庫了。

點(diǎn)擊項(xiàng)目頁面上方的 "edit" 按鈕或者頂部的 Admin 標(biāo)簽,進(jìn)入該項(xiàng)目的管理頁面(見圖 4-10):

2015-05-19/555ad878e09a1

圖 4-10. GitHub 的項(xiàng)目管理頁面

為了給另一個(gè)用戶添加項(xiàng)目的寫權(quán)限,點(diǎn)擊 "Add another collaborator"鏈接,出現(xiàn)一個(gè)用于輸入用戶名的表單。在輸入的同時(shí),它會自動(dòng)跳出一個(gè)符合條件的候選名單。找到正確用戶名之后,點(diǎn) Add 按鈕,把該用戶設(shè)為項(xiàng)目協(xié)作者(見圖 4-11):

2015-05-19/555ad8818f7b1

圖 4-11. 為項(xiàng)目添加協(xié)作者

添加完協(xié)作者之后,就可以在 Repository Collaborators 區(qū)域看到他們的名單(見圖 4-12):

2015-05-19/555ad88a31a52

圖 4-12. 項(xiàng)目協(xié)作者名單

如果要取消某人的訪問權(quán),點(diǎn)擊 "revoke" 即可取消他的推送權(quán)限。對于將來的項(xiàng)目,你可以從現(xiàn)有項(xiàng)目復(fù)制協(xié)作者名單,或者直接借用協(xié)作者群組。

項(xiàng)目頁面

在推送或從 Subversion 導(dǎo)入項(xiàng)目之后,你會看到一個(gè)類似圖 4-13 的項(xiàng)目主頁:

2015-05-19/555ad897dea17

圖 4-13. GitHub 上的項(xiàng)目主頁

別人訪問你的項(xiàng)目時(shí)看到的就是這個(gè)頁面。它有若干導(dǎo)航標(biāo)簽,Commits 標(biāo)簽用于顯示提交歷史,最新的提交位于最上方,這和 git log 命令的輸出類似。Network 標(biāo)簽展示所有派生了該項(xiàng)目并做出貢獻(xiàn)的用戶的關(guān)系圖譜。Downloads 標(biāo)簽允許你上傳項(xiàng)目的二進(jìn)制文件,提供下載該項(xiàng)目各個(gè)版本的 tar/zip 包。Wiki 標(biāo)簽提供了一個(gè)用于撰寫文檔或其他項(xiàng)目相關(guān)信息的 wiki 站點(diǎn)。Graphs 標(biāo)簽包含了一些可視化的項(xiàng)目信息與數(shù)據(jù)。默認(rèn)打開的 Source 標(biāo)簽頁面,則列出了該項(xiàng)目的目錄結(jié)構(gòu)和概要信息,并在下方自動(dòng)展示 README 文件的內(nèi)容(如果該文件存在的話),此外還會顯示最近一次提交的相關(guān)信息。

派生項(xiàng)目

如果要為一個(gè)自己沒有推送權(quán)限的項(xiàng)目貢獻(xiàn)代碼,GitHub 鼓勵(lì)使用派生(fork)。到那個(gè)感興趣的項(xiàng)目主頁上,點(diǎn)擊頁面上方的 "fork" 按鈕,GitHub 就會為你復(fù)制一份該項(xiàng)目的副本到你的倉庫中,這樣你就可以向自己的這個(gè)副本推送數(shù)據(jù)了。

采取這種辦法的好處是,項(xiàng)目擁有者不必忙于應(yīng)付賦予他人推送權(quán)限的工作。隨便誰都可以通過派生得到一個(gè)項(xiàng)目副本并在其中展開工作,事后只需要項(xiàng)目維護(hù)者將這些副本倉庫加為遠(yuǎn)程倉庫,然后提取更新合并即可。

要派生一個(gè)項(xiàng)目,到原始項(xiàng)目的頁面(本例中是 mojombo/chronic)點(diǎn)擊 "fork" 按鈕(見圖 4-14):

2015-05-19/555ad8a67e82c

圖 4-14. 點(diǎn)擊 "fork" 按鈕獲得任意項(xiàng)目的可寫副本

幾秒鐘之后,你將進(jìn)入新建的項(xiàng)目頁面,會顯示該項(xiàng)目派生自哪一個(gè)項(xiàng)目(見圖 4-15):

2015-05-19/555ad8ae01d1b

圖 4-15. 派生后得到的項(xiàng)目副本

GitHub 小結(jié)

關(guān)于 GitHub 就先介紹這么多,能夠快速達(dá)成這些事情非常重要(譯注:門檻的降低和完成基本任務(wù)的簡單高效,對于推動(dòng)開源項(xiàng)目的協(xié)作發(fā)展有著舉足輕重的意義。)。短短幾分鐘內(nèi),你就能創(chuàng)建一個(gè)新賬戶,添加一個(gè)項(xiàng)目并開始推送。如果項(xiàng)目是開源的,整個(gè)龐大的開發(fā)者社區(qū)都可以立即訪問它,提供各式各樣的幫助和貢獻(xiàn)。最起碼,這也是一種 Git 新手立即體驗(yàn)嘗試 Git 的捷徑。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號