git субмодулей без файла .gitmodules? - PullRequest
0 голосов
/ 07 января 2020

При переключении веток (используя SourceTree) я получаю сообщения об ошибках типа

fatal: No url found for submodule path '...' in .gitmodules

Во всем проекте нет файла .gitmodules.

Куда мне обратиться?

SourceTree выполняет следующую команду при переключении ветви:

git --no-optional-locks -c core.quotepath=false submodule update --init 

Когда я ввожу git submodules, вывод будет:

# git submodule                        
fatal: no submodule mapping found in .gitmodules for path '...'

Папка ... пуста.

1 Ответ

2 голосов
/ 07 января 2020

То, что у вас здесь, это сломанный подмодуль. (Или половина подмодуля? Подмодуль без инструкций? Непонятно только, что вызвать это - кроме как, Von C примечания , мы можем сказать, что половина gitlink «gitlink», который, по крайней мере, является жаргонным термином для поиска.)

Подмодуль в Git - это ссылка на другой Git репозиторий . Чтобы использовать субмодуль, у вас уже должен быть другой репозиторий Git. В общем, для создания репозитория Git мы в основном используем git clone для копирования какого-либо другого существующего репозитория. Поэтому, как правило, подмодуль несет с собой необходимые инструкции, которые понадобятся Git для запуска git clone. Эти инструкции go в файл .gitmodules.

Если файл .gitmodules отсутствует , как в этом случае, это означает, что инструкции по настройке подмодуля отсутствуют , Вам решать, нужно ли это исправить, добавив инструкции, или исправить, удалив плохо сформированный подмодуль из вашего следующего коммита.

Удаление полуформированного подмодуля проще. См. Von C принятый ответ на В .gitmodule не найдено подмодулей для пути, который не является подмодулем , но все, что вам нужно сделать, это использовать git rm, а затем совершить. Этот новый коммит больше не будет ссылаться на подмодуль, который нельзя клонировать, потому что отсутствуют инструкции клонирования. Последующие новые коммиты, созданные из этого коммита, в котором не упоминается субмодуль, также не будут упоминать субмодуль (который по-прежнему не существует).

Обратите внимание, что все существующие коммиты остаются неработающими. Единственное, что вы можете сделать с этим, это удалить (или заменить) любые существующие нарушенные коммиты, потому что ни один существующий коммит не может быть изменен. Как правило, не стоит пытаться исправить или удалить существующие коммиты, так как другие люди могут зависеть от них. Полумодуль / сломанный подмодуль, подобный этому , может работать с как обычный (неразрушенный) подмодуль, если у вас есть другой клон Git, клонированный на место.

Кому Устраните проблему, исправив подмодуль, поместите соответствующую конфигурацию в новый файл .gitmodules и git add и git commit файл .gitmodules. Проблема с тем, что на самом деле делает , это, конечно, то, что вам нужно знать, каковы инструкции. Некоторые из них понятны из сломанного подмодуля, потому что информация в файле .gitmodules состоит из нескольких частей: одна часть - это path , который является просто названием режима - 160000 git ls-files запись (опять же, см. Ответ Von C). Но другая часть - это URL для репозитория, который должен быть клонирован, и кто знает, что это может быть? 1


1 Теоретически, тот, кто владеет каким-либо хранилищем, которое вы клонировали, чтобы попасть в эту ситуацию, должен знать - или они должны знать, кто знает, или знать кого-то, кто знает кого-то, кто знает, и т.д. c. Но на практике вы получаете много Так было, когда я попал сюда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...