Git 子模块突然不再被识别为有效的 repo,.git/modules/[submodule] 中的一些文件丢失

Git submodule suddenly no longer recognized as valid repo, some files in .git/modules/[submodule] missing

我一直遇到和this question类似的问题,而且好像也是突然出现的;然而,对我来说,这似乎是由于子模块而发生的——我在主项目中遇到的 运行 git status 错误是

fatal: not a git repository: [submodule]/../.git/modules/[submodule]

当我试图检查 [submodule]/.git.git/modules/[submodule]/config 中的路径是否按照 this answer to a similar question 中的建议发生了什么时,我发现后者不存在,而且更多失踪。具体来说,对我来说 .git/modules/[submodule] 的唯一内容是 refsobjects 目录以及 packed-refs.

我已经尝试按照 a comment on the first question 中的建议添加一个 HEAD,但无法完全弄清楚要将什么作为 ref - 一个简单的 refs/heads/foo(其中 heads/foo 存在于 .git/modules/[submodule]refs 目录中,我检查了那么多)因

而失败
fatal: bad object HEAD
fatal: 'git status --porcelain=2' failed in submodule

并试图将其指向 [submodule]../.git/modules/[submodule]/refs/heads/foo 只会给我原来的错误。我可以回到可用的子模块吗?如果可以,怎么办?对于子模块,幸运的是有一个包含所有更改的远程仓库,主项目的 most 也是如此(我正在尝试一些我还没有跟踪过的东西,所以宁愿不用核武器...)。

已解决(在来自@torek 之后):

我首先通过手动执行描述的步骤 here 删除了子模块(以避免 git 可能在 no-longer-a-repo 子目录上窒息):手动删除 [submodule] 来自 .git/config 的部分,并删除 .git/modules/[submodule] 以及带有子模块的目录。在这一点上,主要项目表现得像 再次回购,所以我可以进行最后一次更改(使用 git add [submodule])以从索引中获取子模块。 之后,我可以用 git submodule add [url/to/submodule].

重新添加子模块