我可以 "uninitialize" 一个 git 子模块吗?

Can I "uninitialize" a git submodule?

我正在开发一个以 Linux 源代码树作为子模块的嵌入式项目。我目前在非开发机器上工作,所以我永远不会使用这个存储库进行构建;仅供参考

有一次我初始化了 linux 子模块(引入了大约 2.5GB 的数据),但现在我想反转这个过程,让 linux 子模块在此存储库中未初始化。明确地说,就 Git 而言,我不想签入对子模块的任何更改;我只想要我的磁盘 space 回来。

我该怎么做?我可以删除 ./linux.git/modules/linux 目录以删除所有不需要的数据,但我怀疑这会让 git 感到困惑和恼火。

下面的前三个步骤是永久删除子模块的方法;第四步将告诉 git 恢复模块,而不是重新初始化它。

1) 从 .git/config:
中删除子模块条目 git submodule deinit -f path/to/submodule

2) 从超级项目的 .git/modules 目录中删除子模块存储库:
rm -rf .git/modules/path/to/submodule

3) 删除位于 path/to/submodule:
的子模块目录 git rm -f path/to/submodule

4) 告诉git放弃子模块的移除;它将 return 模块进入 "uninitialized" 状态,使其不提交任何更改:
git checkout -- .

Source