什么是 git 子模块

子模块英文是 submodule。

想象一下,你在开发一个大型项目(比如一个网站),其中一部分功能(比如一个通用的用户认证模块)实际上是另一个独立的 Git 仓库。你不想把这个独立仓库的代码直接复制到你的主项目里,因为这样不利于维护和更新。这时候,你就可以使用 Git 子模块。

Git 子模块允许你将一个 Git 仓库作为子目录包含到另一个 Git 仓库中。简单来说,就是在一个 Git 仓库里面引用了另一个 Git 仓库。这样做的好处是:

  • 代码复用:可以方便地在多个项目中共享和使用同一个模块。
  • 版本控制:可以独立地对子模块进行版本控制,并与主项目保持同步。
  • 清晰的依赖关系:可以清晰地看到项目依赖了哪些外部模块。

怎么知道什么是 github 的子模块

查看 .gitmodules 文件。

这是最直接的方法。 Git 子模块的信息都存储在一个名为 .gitmodules 的文件中,该文件位于 Git 仓库的根目录下。

如果你的 Git 仓库包含子模块,那么根目录下一定会有 .gitmodules 文件。

.gitmodules 文件是一个文本文件,它包含了每个子模块的配置信息,例如子模块的路径和 URL。

示例 .gitmodules 文件:

[submodule "submodule_A"]
    path = submodule_A
    url = https://github.com/example/submodule_A.git
[submodule "submodule_B"]
    path = libraries/submodule_B
    url = git@github.com:another_example/submodule_B.git

在这个例子中,我们可以看到:

  • submodule_A 是一个子模块,它的路径是 submodule_A,URL 是 https://github.com/example/submodule_A.git
  • submodule_B 也是一个子模块,它的路径是 libraries/submodule_B,URL 是 git@github.com:another_example/submodule_B.git

使用 git submodule status 命令

在 git 仓库根目录输入 git submodule status

可以看到上图。

每一行都是一个子模块,子仓库。

直观的查看子模块

我们也可以通过 github 直接查看。

文件图标有个箭头的就是子模块。