我有一个项目,用于包含路径mysubmodule
的子模块。我从源代码安装了最新的Git(1.8.3-rc2)并运行了git submodule deinit mysubmodule
。然后我删除了.gitmodules
文件并提交了更改。我还从.git
文件夹中删除了mysubmodule
目录。
我想立即将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'
错误。
我该如何解决这个问题?
答案 0 :(得分:84)
Git仍然认为mysubmodule
是一个子模块,因为它以特殊模式“160000”记录在索引中。
有关详细信息,请参阅“git submodule update needed only initially?”
要像in this answer一样检查,您可以执行以下操作:
$ git ls-tree HEAD mysubmodule
160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398 mysubmodule
这不取决于.gitmodule
文件的存在,也不取决于mysubmodule
的内容。
您需要先从索引中删除该条目:
git rm --cached mysubmodule
然后你可以继续。