如何将Git中的文件添加到以前的子模块的路径中?

Chr*_* B. 66 git git-submodules

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

我现在想mysubmodule直接将文件提交到我的仓库,但是git说没有变化.如果我输入git add mysubmodule它什么都不做.如果我输入git add mysubmodule/file.txt它说fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

我还发现,如果您查看一个新版本的repo,它会创建一个mysubmodule目录,尽管没有.gitmodules文件.跑步git submodule init会给你一个No submodule mapping found in .gitmodules for path 'mysubmodule'错误.

我该如何解决?

Von*_*onC 88

Git仍然认为mysubmodule是一个子模块,因为它以特殊模式"160000"记录在索引中.
有关更多信息,请参阅" 最初只需要git子模块更新? ".
要检查一下,如在本回答中,您可以执行以下操作:

 $ git ls-tree HEAD mysubmodule 
 160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398  mysubmodule 
Run Code Online (Sandbox Code Playgroud)

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

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

 git rm --cached mysubmodule
Run Code Online (Sandbox Code Playgroud)

然后你可以继续.