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 檔案就會成為一個子模組。
超級專案和子模組的工作流程通常應遵循以下步驟
- 在子模組中進行更改
- git commit 在子模組中進行更改
- git commit 在超級專案中進行更改
- git submodule update 將更改推送到早於超級專案的各個儲存庫。
- ^ 嗯,那並不完全正確,Git 從 v1.5.3 開始支援這一點,但官方的瓷器(porcelain)並不支援。你可以git init一個父目錄,並建立你自己的“.gitmodules”,然後接著進行git submodule init。一般來說,瓷器(porcelain)未涵蓋的內容超出了本書的範圍。