Подмодуль git не работает после удаления

У меня есть проект с установленным подмодулем. Коллега случайно удалил целевую папку и вместо нее сделал символическую ссылку (указав вне папки проекта), совершив ее.

Теперь я больше не могу восстановить субмодуль, даже после удаления ссылки и создания пустого каталога. .gitmodule и .git/config не изменились. git subodule add и git subodule init ничего не делают.

Я не могу вернуть проблемную фиксацию, потому что она также содержит много других изменений.

Как это можно зафиксировать?

Ответы

Ответ 1

Вам необходимо восстановить каталоги, поскольку они были сохранены в вашем репо перед изменением.

Повторное создание корневого каталога подмодулей не будет работать.

Что будет работать:

git checkout [email protected]{2 days ago} -- path/to/submodule/directory

(если вы знаете, что подмодуль работал, например, 2 дня назад)

Это восстановит пустой каталог, который на самом деле является специальной записью в индексе.

Затем a git submodule update --init восстановит его содержимое.

Ответ 2

Решением было удаление целевого каталога подмодуля и повторное добавление подмодуля:

git rm libs/routing
git submodule add ../librouting.git libs/routing