Как добавить файлы в Git к пути к предыдущему подмодулю?

У меня есть проект, который содержал подмодуль, на пути 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'

Я также обнаружил, что если вы просматриваете новую версию репо, она создает каталог mysubmodule, несмотря на отсутствие файла .gitmodules. И запуск git submodule init дает ошибку No submodule mapping found in .gitmodules for path 'mysubmodule'.

Как это исправить?

Ответ 1

Git все еще думает, что mysubmodule является подмодулем, поскольку он записывается в индекс со специальным режимом "160000".
См. "Git обновление подмодуля, которое требуется только изначально?" для получения дополнительной информации.
Чтобы проверить, что, как в в этом ответе, вы можете сделать:

 $ git ls-tree HEAD mysubmodule 
 160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398  mysubmodule 

Это не зависит от наличия файла .gitmodule или содержимого mysubmodule.

Вам нужно сначала удалить эту запись из индекса:

 git rm --cached mysubmodule

Затем вы можете продолжить.