Я вручную удаляю и добавляю подмодули, редактируя .gitmodules; однако выполнение git submodule update --init --recursive только клонирует существующий ранее модуль A, мой добавленный вручную подмодуль не был клонирован. При запуске git submodule также отображаются старые подмодули, которые были удалены с ошибкой.
фатально: в .gitmodules не найдено сопоставление подмодулей для пути «moduleOld».
в то время как git submodule sync снова показывает только модуль A. Есть ли способ это исправить?





Вам не следует добавлять/удалять подмодуль вручную, редактируя .gitmodules, поскольку git также отслеживает записи в файле .git/config. Попробуйте удалить подмодуль и закоммитить в темринале. А затем добавьте новый подмодуль. Чтобы удалить подмодули, попробуйте:
git rm --cached path/to/submodule #updates Git to stop tracking the submodule
rm -rf path/to/submodule #removes the submodule files locally
git commit -m 'Remove submodule'
А затем, чтобы добавить новый подмодуль, попробуйте:
git submodule add <repository> <path>
git submodule update --init --recursive
Если вы внесете изменения вручную в файл .gitmodules, я полагаю, что запуск синхронизации синхронизирует URL-адрес в .git/config:
git submodule sync
git submodule update --init --recursive
Я думаю, что это обновит URL-адрес, но не добавляет и не удаляет записи подмодуля в .git/config.
Спасибо, мне тоже удалось найти похожий ответ на этот вопрос, но на другой вопрос.