如何在 Git 中添加和删除子模块?

Git 子模块允许你在项目中包含其他 Git 仓库的内容。了解如何添加、删除和管理它们对协作开发非常重要。

工程化与构建 中等 Git 版本控制 Submodule

添加一个 Submodule 的步骤如下:

  1. 在项目根目录执行 git submodule add <url> <path> 命令,其中 <url> 是子模块的 Git 仓库地址,<path> 是子模块的本地路径(例如 git submodule add https://github.com/user/repo.git modules/my-submodule)。
  2. 执行命令后,.gitmodules 文件会自动新增条目,路径下会生成对应文件。
  3. 使用 git statusgit diff --cached 检查变更,确认后提交修改到主仓库:git commit -m "Add submodule"
  4. 克隆主仓库后,需在根目录运行 git submodule init 初始化子模块,再运行 git submodule update 下载内容。

代码示例添加:

# 在项目根目录执行
git submodule add https://github.com/example/module.git subdir/module
git commit -m "Added submodule"

删除一个 Submodule 的步骤如下:

  1. .gitmodules 文件中手动删除对应的子模块条目。
  2. 移除 Git 缓存中的子模块目录,使用 git rm --cached <path>(例如 git rm --cached subdir/module)。
  3. 删除本地文件:rm -rf <path>(请先备份重要数据)。
  4. 检查 .git/config 中是否存在相关子模块配置;若有,建议手动删除避免冲突。
  5. 提交变更到主仓库:git commit -m "Remove submodule"。完整操作可参考。

代码示例删除:

# 编辑 .gitmodules,删除对应条目
git rm --cached subdir/module
rm -rf subdir/module
git commit -m "Removed submodule"

注意事项

  • 添加路径不以 / 结尾,也不应是现有目录。
  • 删除后重新添加可能因缓存冲突失败,建议彻底清除相关文件。

以上操作均需基于有权限的 Git 仓库环境执行,确保所有变更测试后再推送到远端仓库。