Git子模块使用说明
介绍
前端不同应用存在公共的脚本或样式代码,为了避免重复开发,将公共的代码抽取出来,形成一个公共的 git 子模块,方便调用和维护。
软件架构
本仓库代码将作为 git 子模块,被引用到其他仓库中,不可单独运行。
使用说明
1. 添加子模块
git submodule add https://github.com/*.git src/utils/common
git submodule add [仓库 url] [项目中的路径(执行后会用最后一级名称创建文件夹)],如图:
注意:子模块的路径不能是已存在的文件夹,否则会报错。
2. 更新子模块
可以在单独的项目中修改,也可以在项目中修改,修改后需要提交到远程仓库,其他项目才能更新到最新的代码。
git submodule init
git submodule update
3. 删除子模块
- 删除子模块文件夹
git rm -r src/utils/common
- 删除 .gitmodules 文件中相关子模块的信息,类似于:
[submodule "src/utils/common"]
path = src/utils/common
url = https://gitee.com/*.git
- 删除 .git/config 中相关子模块信息,类似于:
[submodule "src/utils/common"]
url = https://gitee.com/*.git
active = true
- 删除 .git 文件夹中的相关子模块文件
$ rm -rf .git\modules\src\utils\common
Jenkins
在 Jenkins 中使用子模块,需要配置两个地方:
1. 需要在构建前执行以下命令
git submodule update --init --recursive
2. 配置凭证,用于拉取子模块代码
- 选择配置-源码管理
- 新增“高级子模块行为”
- 勾选“使用默认的远程父仓库凭证”
注意事项
- 由于部分项目没有使用 TypeScript,考虑到兼容性问题,本项目使用 JavaScript 编写。如果在 TypeScript 项目中引用,需要在
shims-vue.d.ts
中声明模块。
// 替换为对应的路径
declare module "@/utils/common/*";
- 解决合并冲突
#git add submodulename
git add src/utils/common
git commit