使用場(chǎng)景
拆分項(xiàng)目,當(dāng)項(xiàng)目越來(lái)越大之后,我們希望 子模塊 可以單獨(dú)管理股缸,并由 專(zhuān)門(mén) 的人去維護(hù),這個(gè)時(shí)候只可以使用 git submodule
去完成吱雏。
常用命令
git clone <repository> --recursive # 遞歸方式克隆整個(gè)項(xiàng)目
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
直接遞歸克隆敦姻,如果是克隆父項(xiàng)目,可以在克隆完成之后歧杏,使用 git submodule init
初始化子項(xiàng)目列表和 git submodule update
更新最新的子項(xiàng)目镰惦。
更新子模塊
如果子模塊和新的修改,但是父項(xiàng)目沒(méi)有更新到最新得滤,則可以使用 git submodule foreach git pull
將所有的子項(xiàng)目中更新陨献,如果子項(xiàng)目比 .gitmodules 新盒犹,則需要更新一下 .gitmodules 懂更。
父項(xiàng)目中的子模塊的版本是由 commit id 標(biāo)識(shí)的眨业,所以需要更新 .gitmodules 。
刪除子模塊
首先需要 git rm --cached <path>
沮协,然后依次刪除對(duì)應(yīng)的目錄龄捡、.gitmodules 文件中的記錄、 .git/cofig 中的記錄慷暂。再提交到遠(yuǎn)程服務(wù)器聘殖,就可以刪除了。
注意:
在執(zhí)行
git rm --cached <path>
的時(shí)候行瑞,最后不可以有 / 奸腺。
修改子模塊配置信息
與刪除相同,需要同時(shí)修改 .gitmodules 和 .git/config 兩個(gè)文件中的 URL 值血久,然后執(zhí)行 git submodule sync
來(lái)同步突照,然后再提交到遠(yuǎn)程即可。
文章首發(fā)于:https://www.zucchiniy.cn