1. 程式人生 > >git-子模組submodule

git-子模組submodule

git 裸庫

沒有工作區的git倉庫,例如遠端伺服器存放專案程式碼的倉庫,並不需要工作區來修改

git submodule

一個git專案需要引入另外一個git專案的時候,可以使用submodule命令來完成。

git submodule add [email protected].com:huiGod/git_child.git mymodule

在當前git專案中將指定的遠端倉庫作為自己的子模組專案關聯起來,最後的mymodule這個資料夾需要之前不存在,成功執行之後會生成額外的檔案:

這裡寫圖片描述

.gitmodules檔案為:

這裡寫圖片描述

mymodule下面為submodule所關聯的完整遠端倉庫的內容檔案。

由此可見,當前git_parent專案就關聯了一個遠端倉庫在當前倉庫(可以關聯很多個),通過cd可以切換子模組的專案,cd mymodule之後進入到了git_child模組專案中。

這裡寫圖片描述

當關聯的子模組專案有新的提交之後,可以cd切換到相應模組目錄執行 git pull來拉取當前模組最新的程式碼,但是如果有很多個子模組相關聯,顯然這種一個個的切換pull是不切實際的。另一種一次性拉取所有子模組最新程式碼的命令是在最外層的專案目錄執行:

git submodule foreach git pull

如果子模組有最新的提交,那麼繼續執行後續的git add commit push即可拉取所有子模組的最新提交。

對於有submodule的git專案,對應的clone需要有一定的改變,因為同時需要clone對應的子模組:

第一種方法:

git submodule init
git submodule update --recursive

第二種方法:

git clone [email protected].com:huiGod/git_parent.git  --recursive