git submodule 子模块的使用和说明
一、前景
就在2021/12/29日,我将bc小程序movePackages分包,加入了子模块当中。
因为我不想copy了,每次修改一个地方,就得把整个相关的包copy过来,十分的麻烦,要是以后项目多了,copy起来也费劲,维护起来也费劲。
出于这样的考虑,我在git上面寻找相应的解决方案,最终选择了子模块(submodule)。
二、简介
git子模块可以用于项目包含另一个项目的情况,也就是第三方库或被多个项目引用的基础框架的场景
通俗点来说,就是一个git项目里面使用到了其他git项目,而这其他git项目,就需要用到git子模块,就类似于小程序的分包。
(多项目使用单一模块,子模块可以独立维护)
三、添加子模块
#git submodule add -b [分支名称] --force [子模块项目git地址] [包路径]
git submodule add -b package-bc --force http://leixu@gitlab.lanniuh.com/ai_action_xcx.git movePackages
成功添加后会在项目根目录下新建 .gitmodules
文件
四、删除子模块
当其中某个子模块不需要时,也就是删除,可以使用以下命令:
# 删除子模块, 执行后子模块目录将被删除
git rm -f movePackages
五、更新子模块
有2种方法可以更新子模块。
-
直接进入子模块目录,进行拉取
cd movePackages git pull
-
在父模块里,进行子模块更新
git submodule update --remote movePackages
第二种方式默认针对 初始
package-bc
分支, 如果需要更新其他分支就要配置,package
为分支名称:git config -f .gitmodules submodule.movePackages.branch package
六、结论
- 运动模块进化到运动子模块后,不需要成为copy战士,只需要提交,更新即可。(省力性)
- 每一个子模块都是独立存在,可独立维护。(独立性)
- 不但但运动模块可以子模块化,其他模块如果可以通用,也可以子模块化,供其他小程序使用(通用化)
- 所以,相对来说,一个git项目,可以由多个子模块组合构成。(扩展性)