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

时间:2013-05-15 20:42:59

标签: git git-submodules

我有一个项目,用于包含路径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'错误。

我该如何解决这个问题?

1 个答案:

答案 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

然后你可以继续。