How do I add files in Git to the path of a former submodule?

I have a project that used to contain a submodule, at path mysubmodule . I installed the latest Git from source (1.8.3-rc2) and ran git submodule deinit mysubmodule . I then deleted the .gitmodules file and committed the change. I also deleted the .git directory from the mysubmodule folder.

I'd like to commit the files from mysubmodule into my repo directly now, but git says there are no changes. If I type git add mysubmodule it does nothing. If I type git add mysubmodule/file.txt it says fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

I've also discovered if you check out a fresh version of the repo, it creates a mysubmodule directory, despite having no .gitmodules file. And running git submodule init gives you a No submodule mapping found in .gitmodules for path 'mysubmodule' error.

How do I fix this?


Git still think mysubmodule is a submodule, because it is recorded in the index with a special mode "160000".
See "git submodule update needed only initially?" for more.
To check that, as in in this answer, you can do a:

 $ git ls-tree HEAD mysubmodule 
 160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398  mysubmodule 

That doesn't depend on the presence of the .gitmodule file, or on the content of mysubmodule .

You need to remove that entry from the index first:

 git rm --cached mysubmodule

Then you can proceed.

链接地址: http://www.djcxy.com/p/16462.html

上一篇: 用自己的叉子交换git子模块

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