我可以 "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
我正在开发一个以 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