У меня есть удаленное репо (origin
), каталог которого refs
содержит, помимо обычных подкаталогов heads
, tags
и remotes
, также keep-around
и merge-requests
.Это специальные наборы ссылок, которые управляются Gitlab для внутреннего ведения.
Когда я использую git ls-remote
для опроса этого репо, команда перечисляет merge-requests
ссылок, но неkeep-around
запросов:
$ git ls-remote
5ef8f113ba35360de0dfc015601bb832bacb5505 HEAD
... lots of refs/heads/...
... lots of refs/merge-requests/...
... lots of refs/tags...
Аналогично, я могу получить merge-requests
ссылок, например, с
$ git fetch origin refs/merge-requests/999/head
From git.company.com:Company/company
* branch refs/merge-requests/999/head -> FETCH_HEAD
, но когда я запрашиваю keep-around
ссылку, удаленное репоутверждает, что его не существует, хотя я знаю, что он существует:
$ git fetch origin refs/keep-around/291ad6a6bebf067377700d430ac130d758ed52e9
fatal: couldn't find remote ref refs/keep-around/291ad6a6bebf067377700d430ac130d758ed52e9
fatal: The remote end hung up unexpectedly
В удаленном репозитории config
я не вижу ничего, что могло бы быть связано с этим.Что вызывает другое поведение?
Приложение: Мередит Ховард предполагает, что это может быть особенностью Gitlab;есть специальный конфиг Gitlab, в котором указывается скрывать ссылки в refs/keep-around
.См. этот запрос поддержки от кого-то с похожим вопросом .
Приложение: Было предложено, чтобы это было дубликатом Git, чтобы получить определенный коммит по хешу Я не пытаюсь получить конкретный коммит по хешу.Я хочу знать, почему в удаленном репо отсутствуют определенные ссылки в его списке.