Pro Git 2.1 取得專案的 Git 倉庫

出自DILA Wiki

有兩種取得 Git 專案倉庫的方法。第一種是在現存的目錄下,通過匯入所有檔來創建新的 Git 倉庫。第二種是從已有的 Git 倉庫克隆(clone)出一個新的鏡像倉庫來。

從目前的目錄初始化

要對現有的某個專案開始用 Git 管理,只需到此專案所在的目錄,執行:

$ git init

初始化後,在目前的目錄下會出現一個名為 .git 的目錄,所有 Git 需要的資料和資源都存放在這個目錄中。不過目前,僅僅是按照既有的結構框架初始化好了裡邊所有的檔和目錄,但我們還沒有開始跟蹤管理專案中的任何一個檔。(在第九章我們會詳細說明剛才創建的 .git 目錄中究竟有哪些檔,以及都起些什麼作用。)

如果目前的目錄下有幾個檔想要納入版本控制,需要先用 git add 命令告訴 Git 開始對這些檔進行跟蹤,然後提交:

$ git add *.c
$ git add README
$ git commit -m 'initial project version'

稍後我們再逐一解釋每條命令的意思。不過現在,你已經得到了一個實際維護著若干檔的 Git 倉庫。

從現有倉庫克隆

如果想對某個開源專案(Open Source Project)出一份力,可以先把該專案的 Git 倉庫複製一份出來,這就需要用到 git clone 命令。如果你熟悉其他的 VCS 比如 Subversion,你可能已經注意到這裡使用的是 clone 而不是 checkout。這是個非常重要的差別,Git 收取的是專案歷史的所有資料(每一個檔的每一個版本),伺服器上有的資料克隆之後本地也都有了。實際上,即便伺服器的磁片發生故障,用任何一個克隆出來的用戶端都可以重建伺服器上的倉庫,回到當初克隆時的狀態(可能會丟失某些伺服器端的掛鉤設置,但所有版本的資料仍舊還在,有關細節請參考第四章)。

克隆倉庫的命令格式為 git clone [url]。比如,要克隆 Ruby 語言的 Git 代碼倉庫 Grit,可以用下面的命令:

$ git clone git://github.com/schacon/grit.git

這會在目前的目錄下創建一個名為 “grit” 的目錄,其中內含一個 .git 的目錄,並從同步後的倉庫中拉出所有的資料,取出最新版本的檔案拷貝。如果進入這個新建的 grit 目錄,你會看到專案中的所有檔已經在裡邊了,已準備好後續的開發和使用。如果希望在克隆的時候,自己定義要新建的項目目錄名稱,可以在上面的命令最後指定:

$ git clone git://github.com/schacon/grit.git mygrit

唯一的差別就是,現在新建的目錄成了 mygrit,其他的都和上邊的一樣。

Git 支援許多資料傳輸協定。之前的例子使用的是 git:// 協議,不過你也可以用 http(s):// 或者 user@server:/path.git 表示的 SSH 傳輸協議。我們會在第四章詳細介紹所有這些協議在伺服器端該如何配置使用,以及各種方式之間的利弊。