git modules
意义
Git子模块进行代码管理和共享,适用于需要将一个项目作为另一个项目的子目录的情况,组件库、api库、多项目的公共部分提取,为微前端做基础。
- 解决公共代码问题: 在项目A和项目B中都会用到,例如组件库,那么这些文件可以作为 submodules 来管理,减少重复代码
- 解决团队维护难题: 为了解决多团队维护的难题,Git Submodules 也能大展身手,它可以让每个团队负责的模块就是一个 Git 仓库,这些 Git 仓库都被包含在同一个主 Git 项目下
子模块的概念
- 子模块(submodule)是一个内嵌在其他 git 仓库(父工程)中的 git 仓库,子模块有自己的 git 记录。
- 被当作 submodule 的 Git 仓库,其实不知道自己变成了 submodule,它更不知道爸爸们有谁。(意思是,当你打开某个被当作 submodule 的 Git 仓库首页时,或者拉下这个仓库时,没有任何痕迹表明它是个submodule。因为父子信息不存在这里,只存在爸爸那里。)
- 父子关系的信息保存在主项目的 .gitmodules 文件,如果不是新加 submodule,这个文件通常不必改变了,因为信息比较固定。
- 主项目还保存了对应 submodule 的版本号(commit id),没有冗余存储 submodule 的代码。(这其实是个跳转到另一个仓库的链接,指明了具体的 commit id)
常用指令
1.新增子模块
向一个项目中添加子模块 git submodule add <repository-url> <path>
<repository-url>
是你想要添加的子模块的Git仓库地址。
<path>
是你在本地想要将这个子模块放置的路径。
之后会 clone 该子模块对应的远程项目文件到本地父项目目录下的同名文件夹中(./xxx/),父项目下也会多一个叫 .gitmodules 的文件,内容大致为:
[submodule "xxx"]path = xxxurl = git@github.com:yyy/xxx.git
如果存在多个子模块,则会继续向该文件中追加与上面相同格式的内容;
2.查看子模块
git submodule
或 git submodule status
3.初始化子模块
git submodule init
此命令会生成 .gitmodules 文件,记录子模块的远程仓库地址和本地路径。
4.更新子模块
git submodule update --remote
拉取子模块的最新代码并更新本地仓库
PS:
参考地址:https://cloud.tencent.com/developer/article/2136829