首页 > 解决方案 > Git 认为我的子模块中的东西是主仓库的一部分

问题描述

在我的子模块中单独提交和推送代码的过程中,根仓库突然认为我的子模块中的代码实际上是根仓库的一部分;也就是说,作为子模块一部分的文件现在显示为要添加到根存储库中的未暂存文件。我通过运行验证了这一点git status

几乎就像 git 忘记了子模块之类的东西,并认为我添加了所有这些文件。我确实注意到子模块有一个.git 文件而不是.git 目录。在文件中有这一行

gitdir:../.git/modules/root-repo

并且根存储库具有.git/modules/sub-repo预期的文件夹。

我如何回到正确的状态?

我想我可以再次克隆根存储库并递归更新子模块,但这似乎很繁重。

标签: gitgit-submodulesgit-for-windows

解决方案


我想我可以再次克隆根仓库并递归更新子模块

这将是一个很好的第一个状态,以便检查:

  • 您仍然有一个.gitmodules列出这些子模块路径的文件
  • 这些子模块的根文件夹仍被视为 gitlink,如下所示

    cd /parent/folder/of/submodule
    git ls-files | grep 160000
    

推荐阅读