Как добавить файлы в 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
Затем вы можете продолжить.