最近,有一些项目用到了相同的模块,便想着该如何能够复用。类似前端的私有 npm 库之类的,有没有更好的解决方法呢?最后一通研究下来,得出 git submodule 是比较适合的解决方案,搭建方便,适用于前后端不同语言不同类型的项目。以下记录下使用过程中发现和解决的问题。
为项目添加 submodule
git submodule add <repository> <path>
通常得指定分支
git submodule add -b <branch> <repository> <path>
clone 项目子模块为空文件夹的解决方案
git submodule update --init
子模块的依赖问题
父项目需要安装子项目所用到的依赖问题,如果是前端项目就需要安装 dependencies 下的库
子模块如何拉取更新
有两种方式,区别在于会不会拉取所有 submodule 的最新更新。
- 在根目录下运行
git submodule update --recursive --remote
,这个命令会拉取所有 submodule 的最新更新 - cd 到 submodule 的目录,运行
git pull <remote> <branch>
命令,可以指定分支之类,这种方式只会拉取对应 submodule 的最新更新