跳轉到內容

Git/子模組和超級專案

來自華夏公益教科書
< Git

超級專案是 Git 的一個新功能,已經開發了很長時間。它解決了對多個 Git 儲存庫進行更好控制的需求。超級專案功能的瓷器(porcelain)相當新,最近才在 Git v1.5.3 中釋出。

一個 Git 超級專案可能包含一組Git 儲存庫,每個儲存庫都稱為子模組。你可以將子模組看作子專案超級專案看作超級模組。為什麼這兩個術語在沒有其替代方案的情況下會帶有字首,確實沒有太大意義;不過,這就是官方 Git 文件對它們的稱呼方式。

唯一專門用於子模組/超級專案功能的 Git 應用程式是git-submodule

超級專案

[編輯 | 編輯原始碼]

超級專案只是一個 Git 儲存庫。要建立一個超級專案,只需對任何目錄進行git init操作,並git submodule add你想要包含的所有 Git 檔案。補充一點,你目前無法git submodule add位於同一目錄下的直接子目錄的 Git 儲存庫。[1]

最終的結構將類似於以下內容

|- superproject
  |- submodule (git archive) [a]
  |- submodule [b]
  |- submodule [c]
  |- submodule [d]

當有人拉取超級專案時,他們將看到每個子模組的一系列空資料夾。然後,他們可以git submodule init他們想要使用的所有子模組。

子模組

[編輯 | 編輯原始碼]

當你在另一個 Git 儲存庫中執行git submodule add操作後,一個Git 檔案就會成為一個子模組


工作流程

[編輯 | 編輯原始碼]

超級專案和子模組的工作流程通常應遵循以下步驟

  1. 在子模組中進行更改
  2. git commit 在子模組中進行更改
  3. git commit 在超級專案中進行更改
  4. git submodule update 將更改推送到早於超級專案的各個儲存庫。
  1. ^ 嗯,那並不完全正確,Git 從 v1.5.3 開始支援這一點,但官方的瓷器(porcelain)並不支援。你可以git init一個父目錄,並建立你自己的“.gitmodules”,然後接著進行git submodule init。一般來說,瓷器(porcelain)未涵蓋的內容超出了本書的範圍。
華夏公益教科書