Ответ "not our ref" обычно означает, что ваш сервер настроен на ограничение прямой выборки объектов по идентификатору, и нет подходящей ссылки, позволяющей извлечь этот объект.
Git предоставляет три вариантакоторый контролирует, можете ли вы получить произвольный идентификатор объекта: один, который позволяет выбрать любой произвольный объект, к которому Git имеет доступ, другой, который позволяет получить любой объект, достижимый из ссылки, и другой, который дополнительно позволяет получить объекты, достижимые из скрытых ссылок.Большинство провайдеров серверов предпочитают отключить один или несколько из них, что часто означает, что вы можете запросить идентификатор объекта только в том случае, если на него указывает не скрытая ссылка (т. Е. Ветвь или тег).
"Не нашref "сообщение" означает, что вы пытаетесь получить объект по идентификатору объекта, который используется для подмодулей, но сервер не позволяет его по вышеуказанной причине.Если вы используете кэширование ссылок Bitbucket Server, это также может означать, что сервер кэширует устаревшие данные;в таком случае вы должны отключить кэширование ссылок, если вам нужно, чтобы все работало.
Есть пара вещей, которые вы можете сделать.Если вам нужна возможность проверить произвольную ревизию, вы можете создать ветку, которая на нее указывает.Или, если вашему подмодулю не нужна конкретная ревизия, а только самая последняя ветка, вы можете установить опцию submodule.<name>.branch
(см. man gitmodules
), и тогда вы всегда будете проверять последнюю ветку.Если вы используете собственный сервер, вы можете установить для uploadpack.allowAnySHA1InWant
значение true.Наконец, вы можете вручную извлечь подмодуль (возможно, с помощью git submodule foreach
), который обычно будет иметь нужную вам ревизию.