[筆記] 關於 Git Submodule 建立主從儲庫的關聯

問題:

我有一個利用 Sphinx 建置的文檔專案,並已上傳至 GitHub。該文檔專案的 theme 是自行設計,並準備給多個文檔專案引用 (也就是共用),所以 theme 也是視為另一個專案,並也上傳至 GitHub。

這樣的作法可以確保爾後所有的文檔專案,都可以引用到最新版本的 theme,而不用個別採複製、覆蓋的方式來個別維護 theme 的檔案結構。

所以該如何讓文檔專案可以引用 theme 專案,建立關聯?

解決方案

利用 Git submodule 指令,讓該文檔專案將 theme 專案視為主專案內的子模組。

簡單作法:

  • 新增 submodule:
    git submodule add git://github.com/username/custom_theme.git _theme

    如此在主專案目錄下,會新增子目錄 _theme 與檔案-.gitmodule,內容為:

    [submodule "_themes/custom"]
    	path = _themes/custom
    	url = https://github.com/username/custom_theme.git

    Git 就是利用這個檔案建立主從專案的關聯性。

  • 註冊與更新 submodule:

    git submodule init

    根據 .gitmodules 的名稱和 URL,將這些資訊註冊到 .git/config 內。

    git submodule update

    根據已註冊(也就是 .git/config )的 submodule 進行更新。

    ** 主專案如果利用 git clone 指令將位於遠端 (如 GitHub)的儲庫複製回 local 時,submodule 並不會一同被複製回來,所以 submodule 所對應的目錄是空的;此時就可以利用上述兩個指令,確實把 submodule 的內容抓回來。

※ 參考資訊
 o Git submodule tutorial
 o Git Book/Git Tools-Submodules
 o Git Submodule 用法筆記

文章導覽

   

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *