>> >> >> Reference << << << <<<<<<Ref>>>>>>
Submodule
Modified: 2025-12-31 | Author:ljf12825

git submodule是Git提供的一种机制,用来在一个Git仓库中嵌套另一个Git仓库
可以理解为:

这非常适合管理依赖库、插件、公共组件等,因为它能让你把一个外部项目直接纳入你的项目里,但又保持它独立管理

适用场景举例:

基本操作

添加子模块

git submodule add <仓库地址> <路径>

示例

git submodule add https://github.com/username/libfoo extern/libfoo

这会在extern/libfoo文件夹下放入libfoo仓库

克隆包含子模块的仓库
直接git clone主仓库时,子模块目录是空的 需要执行

git submodule update --init --recursive

这样才能把子模块拉取下来

--recursive的作用是:如果子模块里还有自模块,也一并初始化

更新子模块
拉取主仓库后,子模块可能停在某个commit。要更新到子模块仓库的最新提交,可以:

git submodule update --remote

或者进入子模块目录手动

cd extern/libfoo
git checkout main
git pull

更新后要回到主仓库提交一次,因为主仓库记录的只是子模块的commit指针

删除子模块
删除比较繁琐,需要

git submodule deinit -f <路径>
rm -rf .git/modules/<路径>
git rm -f <路径>

注意事项

git submodule update --init --recursive

让团队一键拉取依赖

替代方案

Submodule用得不好会很麻烦,常见的替代方案