git 子模块

回到笔记目录

当在一个项目中使用了另外一个项目时,应使用 submodule

为项目添加子模块

  • git submodule add [--] <repository> [<path>]

    这会同时注册并更新子模块;操作之后需要在主仓库暂存并commit。

克隆、更新包含子模块的项目

对于包含子模块的项目,在 clonepull 等操作后需要用

git submodule update --init --recursive

其中 --init 注册子模块到配置文件,update更新子模块到仓库指定版本,--recursive 递归更新嵌套的子模块

  • 也可以用 git clone --recursive [--] <repository> [<directory>] 代替普通的 clone
  • 如果子模块地址发生变化,先使用 git submodule sync --recursive 更新其地址,然后再更新子模块

编辑子模块

子模块相当于完整仓库,如果想要更换分支、更改当前版本、拉取新版本等等,只需要进入子模块操作即可;操作之后需要在主仓库暂存并commit。

查看子模块

  • git submodule status [--] [<path>…​]

    列出位于 path 的子模块信息,如不指定则全数列出;status可以省略

移除子模块

git rm <path> 就足够了