首页/开发/Git 与协作速查/完整移除一个子模块
进阶与大仓实践69 条

完整移除一个子模块

顺序:deinit 清工作区 → git rm 移除 gitlink 与 .gitmodules 条目 → 删除 .git/modules/<name> 残留缓存 → 提交变更。

Git 与协作速查开发更新于 2026-10-12
步骤deinit → git rm <路径> → 清理 .git/modules → commit
清理缓存.git/modules/<name> 需手动删除
提交一次提交同时包含 gitlink 删除与 .gitmodules 修改

操作序列

操作序列
git submodule deinit -f vendor/common
git rm -f vendor/common
rm -rf .git/modules/vendor/common
git commit -m 'chore: 移除 common 子模块'
删缓存目录不可逆:确认子模块仓库已推送到远端或本地另有备份再执行。

易错点

  • 漏删 .git/modules 缓存后再次添加同名子模块会沿用旧配置(如旧 URL)
  • 删除前确认子模块内没有未推送的本地提交,否则内容会一起丢失

数据来源与参考

  • Git 官方文档:git-submodule(deinit/git rm 组合)
  • Pro Git 2nd Edition · 7.11 子模块
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌