如何在Git中添加文件到以前的子模块的path?

我有一个项目,用来包含一个子模块,在pathmysubmodule 。 我从源代码(1.8.3-rc2)安装了最新的Git,并运行git submodule deinit mysubmodule 。 然后,我删除了.gitmodules文件并提交了更改。 我也从mysubmodule文件夹中删除了.git目录。

我想直接从mysubmodule提交文件到我的mysubmodule ,但是git说没有任何改变。 如果我inputgit add mysubmodule它什么都不做。 如果我inputgit add mysubmodule/file.txt它说: fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

我还发现,如果您查看新版本的回购,它会创build一个mysubmodule目录,尽pipe没有.gitmodules文件。 并运行git submodule init给你一个No submodule mapping found in .gitmodules for path 'mysubmodule'错误。

我该如何解决?

Git仍然认为mysubmodule是一个子模块,因为它是以特殊模式“160000”logging在索引中的。
请参阅“ 最初只需要git子模块更新? ”以获取更多信息。
要检查, 在这个答案 ,你可以做一个:

  $ git ls-tree HEAD mysubmodule 160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398 mysubmodule 

这并不取决于.gitmodule文件的存在,也不取决于.gitmodule的内容。

您需要先从索引中删除该条目:

  git rm --cached mysubmodule 

然后你可以继续。