使用場景
拆分項目,當項目越來越大之后,我們希望 子模塊 可以單獨管理,並由 專門 的人去維護,這個時候只可以使用 git submodule
去完成。
常用命令
git clone <repository> --recursive # 遞歸方式克隆整個項目
git submodule add <repository> path # 添加子模塊
git submodule init # 初始化子模塊
git submodule update # 更新子模塊
git submodule foreach git pull # 拉取所有子模塊
使用方式
添加子模塊
git submodule add <repository> path
即可添加
克隆子模塊
git clone <repository> --recursive
直接遞歸克隆,如果是克隆父項目,可以在克隆完成之后,使用 git submodule init
初始化子項目列表和 git submodule update
更新最新的子項目。
更新子模塊
如果子模塊和新的修改,但是父項目沒有更新到最新,則可以使用 git submodule foreach git pull
將所有的子項目中更新,如果子項目比 .gitmodules 新,則需要更新一下 .gitmodules 。
父項目中的子模塊的版本是由 commit id 標識的,所以需要更新 .gitmodules 。
刪除子模塊
首先需要 git rm --cached <path>
,然后依次刪除對應的目錄、.gitmodules 文件中的記錄、 .git/cofig 中的記錄。再提交到遠程服務器,就可以刪除了。
注意:
在執行
git rm --cached <path>
的時候,最后不可以有 / 。
修改子模塊配置信息
與刪除相同,需要同時修改 .gitmodules 和 .git/config 兩個文件中的 URL 值,然后執行 git submodule sync
來同步,然后再提交到遠程即可。