Git --everything-is-local

2.1 Git 基礎 - 取得Git儲存庫

取得Git儲存庫

讀者可使用兩種主要的方法取得一個Git儲存庫。 第一種是將現有的專案或者目錄匯入Git。 第二種從其它伺服器複製一份已存在的Git儲存庫。

在現有目錄初始化儲存庫

若讀者要開始使用 Git 追蹤現有的專案,只需要進入該專案的目錄並執行:

$ git init

這個命令會建立名為 .git 的子目錄,該目錄包含一個Git儲存庫架構必要的所有檔案。 目前來說,專案內任何檔案都還沒有被追蹤。(關於.git目錄內有些什麼檔案,可參考第九章)

若讀者想要開始對現有的檔案開始做版本控制(除了空的目錄以外),讀者也許應該開始追蹤這些檔案並做第一次的提交。 讀者能以少數的git add命令指定要追蹤的檔案,並將它們提交:

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

這些命令執行完畢大約只需要一分鐘。 現在,讀者已經有個追蹤部份檔案及第一次提交內容的Git儲存庫。

複製現有的儲存庫

若讀者想要取得現有的Git儲存庫的複本(例如:讀者想要散佈的),那需要使用的命令是 git clone。 若讀者熟悉其它版本控制系統,例如:Subversion,讀者應該注意這個命令是複製(clone),而不是取出特定版本(checkout)。 這一點非常重要,Git取得的是大部份伺服器端所有的資料複本。 該專案歷史中所有檔案的所有版本都在讀者執行過 git clone 後拉回來。 事實上,若伺服器的磁碟機損毀,讀者可使用任何一個客戶端的複本還原伺服器為當初取得該複本的狀態(讀者可能會遺失一些僅存於伺服器的攔截程式,不過所有版本的資料都健在),參考第四章取得更多資訊。

讀者可以 git clone [url],複製一個儲存庫。 例如:若讀者想複製名為Grit的Ruby Git程式庫,可以執行下列命令:

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

接下來會有個名為grit的目錄被建立,並在其下初始化名為.git的目錄。 拉下所有存在該儲存庫的所有資料,並取出最新版本為工作複本。 若讀者進入新建立的 grit 目錄,會看到專案的檔案都在這兒,且可使用。 若讀者想要複製儲存庫到grit以外其它名字的目錄,只需要在下一個參數指定即可:

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

這個命令做的事大致如同上一個命令,只不過目的目錄名為mygrit。

Git提供很多種協定給讀者使用。 上一個範例採用 git:// 協定,讀者可能會看過 http(s):// 或者 user@server:/path.git 等使用 SSH 傳輸的協定。 在第四章會介紹設定存取伺服器上的 Git 儲存庫的所有可用的選項,以及它們的優點及缺點。