Как добавить файлы в 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 ответ

Решение

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

 $ git ls-tree HEAD mysubmodule 
 160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398  mysubmodule 

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

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

 git rm --cached mysubmodule

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

Другие вопросы по тегам