Git submodule的使用

滴水微瀾發表於2017-09-06

1.在專案中使用Submodule

為當前工程新增submodule,命令如下:
git submodule add 倉庫地址 路徑
倉庫地址:是指子模組倉庫地址URL。
路徑:指將子模組放置在當前工程下的路徑。
注意:路徑不能以 / 結尾(會造成修改不生效)、不能是現有工程已有的目錄(不能順利 Clone)
命令執行完成,會在當前工程根路徑下生成一個名為“.gitmodules”的檔案,其中記錄了子模組的資訊。
新增完成以後,再將子模組所在的資料夾新增到工程中即可。

 

2.修改Submodule
進入到子模組中,修改了檔案後
提交Submodule的更改內容:git commit -a -m'test submodule'
然後push 到遠端伺服器: git push
然後再回到父目錄,提交Submodule在父專案中的變動:
git commit -m'update submodule'
git push

3.更新Submodule
更新Submodule有兩種方式:
在父專案的目錄下直接執行:git submodule foreach git pull
在Submodule的目錄下面更新:git pull
更新Submodule:git submodule update
如果子模組有因的commitID產生,則需要重新提交到主工程


4.clone Submodule
clone Submodule有兩種方式 一種是採用遞迴的方式clone整個專案,一種是clone父專案,再更新子專案。
採用遞迴引數 --recursive:git clone https://github.com/zhfei/MyTestWorkProduct.git --recursive
第二種方法先clone父專案,再初始化Submodule:
git clone https://github.com/zhfei/MyTestWorkProduct.git
cd pod-project
git submodule init


5.刪除Submodule
git 並不支援直接刪除Submodule需要手動刪除對應的檔案:
cd pod-project

git rm --cached subModule
rm -rf subModule
rm .gitmodules
更改git的配置檔案config:
vim .git/config
可以看到Submodule的配置資訊:

[submodule "subModule"]
url = https://github.com/zhfei/ZFFlowLayout.git
刪除submodule相關的內容,然後提交到遠端伺服器:

git commit -a -m 'remove subModule submodule'

 

6.切換所以子模組分支

git submodule foreach git checkout develop

 

參考文章:使用Git Submodule管理子模組 https://segmentfault.com/a/1190000003076028
demo地址:https://github.com/zhfei/MyTestWorkProduct.git

相關文章