我可以“取消初始化”一个 git 子模块吗?

Dan*_*com 10 git git-submodules

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

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

我怎样才能做到这一点?我可以删除./linux.git/modules/linux目录以摆脱所有不需要的数据,但我怀疑这会让 git 理所当然地感到困惑和烦恼。

Enc*_*lon 18

以下前三个步骤是永久删除子模块的方法;第四步会告诉 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丢弃子模块的删除;它将模块返回到“未初始化”状态,使其无需提交任何更改:
git checkout -- .

来源

  • 最重要的是,如果您运行“git checkout -- .”,您可能不会有与删除子模块相关的更改 (2认同)
  • 步骤1和2直接回答OP的问题。步骤 3 和 4 是不必要的,不应包含在答案中。 (2认同)