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

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 刪除配置項中子模組相關條目