git submodule子模組管理
有種情況我們經常會遇到:某個工作中的專案需要包含並使用另一個專案。 也許是第三方庫,或者你獨立開發的,用於多個父專案的庫。 現在問題來了:你想要把它們當做兩個獨立的專案,同時又想在一個專案中使用另一個
1、新增子模組
git submodule add 【URL】【path】
其中,url為子模組的路徑,path為該子模組儲存的目錄路徑
安裝完成後會建立或者修改.gitmodules,新增一個檔案路徑
.gitmodules內容如下:
2、初始化更新子模組
初始化本地配置檔案
git submodule init
更新子模組
git submodule foreach “git pull origin master”
多個子模組都可以更新
3、修改子模組
cd rn-app(子模組目錄)
modified子模組
git commit -am “modified commit” 提交修改內容
git push origin master 提交程式碼到遠端倉庫
4、克隆子模組
有兩種方式克隆子模組:
(1)、採用遞迴引數 --recursive 克隆整個專案
git clone --recursive [email protected]
:cst-rn/rnSubscribe.git
可以看到只有父專案新增的子模組,在clone時,都會遞迴的把子模組全部克隆到專案裡面
(2)、先clone父專案,在初始化submodule
git clone [email protected]:cst-rn/rnSubscribe.git
cd rnSubscribe
git submodule init
git submodule update
5、子模組刪除
git rm --cached 子模組目錄 刪除子模組快取
rm -rf 子模組目錄 刪除子模組目錄
vim .gitmodules 刪除對於子模組相關條目
vim .git/config 刪除配置項中子模組相關條目
常見問題
1、一些操作導致子模組無法正常新增
使用一下命令安裝:
git submodule add --name Common [email protected]:cs70/console-before.git ./rn-app
或者
git submodule add --force [email protected]:cst-rn/rn-app.git
2、提示子模組已存在 但是本地並未見到
刪除子模組是未刪除乾淨
git rm --cached rn-design
rm -rf rn-design
rm .gitmodules
vim .git/config 刪除配置項中子模組相關條目