用途:在主 Git 仓库中嵌入其他 Git 仓库,管理外部库、跨项目共享模块,或将外部依赖锁定到特定提交版本。
主要能力:添加子模块并记录到 .gitmodules;克隆时递归初始化;更新到远端最新或检出主仓库引用的提交;在子模块内提交推送并回写主仓库引用;用 foreach 批量执行命令;移除子模块并清理缓存;查看状态与摘要。
必要用法:添加用 git submodule add <repository-url> <path>,跟踪分支加 -b main;克隆用 git clone --recursive <repository-url>,或克隆后执行 git submodule update --init --recursive;更新用 git submodule update --remote,可加 --merge 或 --rebase;批量用 git submodule foreach 'git pull origin main',嵌套加 --recursive;移除依次执行 git submodule deinit <path>、git rm <path>、rm -rf .git/modules/<path> 后提交;状态用 git submodule status。
适用场景:外部库与共享组件、多项目复用同一模块、锁定依赖版本、含子模块仓库的克隆与更新、CI/CD 中递归检出。
限制与注意:子模块默认处于 detached HEAD,需手动检出分支;克隆后必须初始化;子模块变更后需在主仓库更新引用;私有子模块需配置 SSH 密钥或令牌;移除时须删除 .git/modules 缓存;.gitmodules 使用相对路径可能在 fork 中出问题。具体收费、平台与效果资料未提供。