Русский ▾ Topics ▾ Latest version ▾ git-show-ref last updated in 2.46.0

НАЗВАНИЕ

git-show-ref — Вывод списка ссылок в локальном репозитории

ОБЗОР

git show-ref [--head] [-d | --dereference]
	     [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]
	     [--] [<шаблон>…​]
git show-ref --verify [-q | --quiet] [-d | --dereference]
	     [-s | --hash[=<n>]] [--abbrev[=<n>]]
	     [--] [<ссылка>…​]
git show-ref --exclude-existing[=<шаблон>]
git show-ref --exists <ссылка>

ОПИСАНИЕ

Отображает ссылки, доступные в локальном репозитории, вместе со связанными идентификаторами коммитов. Результаты можно фильтровать с помощью шаблона, а метки можно разыменовывать в идентификаторы объектов. Кроме того, его можно использовать для проверки существования конкретной ссылки.

По умолчанию показывает метки, головы и внешние ссылки.

Форма --exclude-existing — это фильтр, который делает обратное. Он читает ссылки из stdin, по одной ссылке в строке, и показывает те, которые не существуют в локальном репозитории.

Форму --exists можно использовать для проверки существования одной ссылки. Эта форма не проверяет, разрешается ли ссылка в фактический объект.

Использование этой утилиты рекомендуется вместо прямого доступа к файлам в каталоге .git.

ПАРАМЕТРЫ

--head

Выводить ссылку HEAD, даже если она должна была бы быть отфильтрована.

--branches
--tags

Ограничивать локальными ветками и локальными метками соответственно. Эти параметры не являются взаимоисключающими; если указаны оба, отображаются ссылки, хранящиеся в «refs/heads» и «refs/tags». Обратите внимание, что --heads является устаревшим синонимом для --branches и может быть удалён в будущем.

-d
--dereference

Также разыменовывать метки в идентификаторы объектов. Они будут показаны с добавленным ^{}.

-s
--hash[=<n>]

Показывать только OID, а не имя ссылки. При объединении с --dereference разыменованная метка всё равно будет показана после OID.

--verify

Включает более строгую проверку ссылок, требуя точный путь к ссылке. Помимо возврата кода ошибки 1, он также выведет сообщение об ошибке, если --quiet не был указан.

--exists

Проверяет, существует ли указанная ссылка. Возвращает код завершения 0, если она существует, 2 — если отсутствует, и 1 в случае, если поиск ссылки завершился ошибкой, отличной от отсутствия ссылки.

--abbrev[=<n>]

Сокращать имя объекта. При использовании --hash вам не нужно указывать --hash --abbrev; достаточно --hash=n.

-q
--quiet

Не выводить никаких результатов в stdout. Может использоваться с --verify для беззвучной проверки существования ссылки.

--exclude-existing[=<pattern>]

Заставляет git show-ref действовать как фильтр, который читает ссылки из stdin в форме ^(?:<что-угодно>\s)?<имя-ссылки>(?:\^{})?$ и выполняет следующие действия с каждой: (1) удалить ^{} в конце строки, если есть; (2) игнорировать, если предоставлен шаблон и он не соответствует началу имени ссылки; (3) выдать предупреждение, если имя ссылки не является правильно сформированным, и пропустить; (4) игнорировать, если имя ссылки является ссылкой, существующей в локальном репозитории; (5) в противном случае вывести строку.

<pattern>…​

Показать ссылки, соответствующие одному или нескольким шаблонам. Шаблоны сопоставляются с конца полного имени, и сопоставляются только целые части, например, master соответствует refs/heads/master, refs/remotes/origin/master, refs/tags/jedi/master, но не refs/heads/mymaster или refs/remotes/master/jedi.

ВЫВОД

Вывод имеет формат:

<oid> SP <ссылка> LF

Например,

$ git show-ref --head --dereference
832e76a9899f560a90ffd62ae2ce83bbeff58f54 HEAD
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/master
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/origin
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
6ddc0964034342519a87fe013781abf31c6db6ad refs/tags/v0.99.9c^{}
055e4ae3ae6eb344cbabf2a5256a49ea66040131 refs/tags/v1.0rc4
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
...

При использовании --hash (и не --dereference) вывод имеет следующий формат:

<oid> LF

Например,

$ git show-ref --branches --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...

ПРИМЕРЫ

Чтобы показать все ссылки с именем «master», будь то метки, головы или что-либо ещё, независимо от того, насколько глубоко в иерархии имён ссылок они находятся, используйте:

	git show-ref master

Это покажет «refs/heads/master», а также «refs/remote/other-repo/master», если такие ссылки существуют.

При использовании флага --verify команда требует точный путь:

	git show-ref --verify refs/heads/master

будет соответствовать только точной ветке с именем «master».

Если ничего не соответствует, git show-ref вернёт код ошибки 1, а в случае проверки (verification) покажет сообщение об ошибке.

Для использования в сценариях вы можете попросить его быть тихим с помощью флага --quiet, что позволяет делать такие вещи, как

	git show-ref --quiet --verify -- "refs/heads/$headname" ||
		echo "$headname не является допустимой веткой"

чтобы проверить, существует ли конкретная ветка или нет (обратите внимание, как мы на самом деле не хотим показывать никаких результатов, и мы хотим использовать для этого полное имя ссылки, чтобы не вызвать проблему с неоднозначными частичными совпадениями).

Чтобы показывать только метки или только собственно головы веток, используйте соответственно --tags и/или --branches (использование обоих означает, что он показывает метки и ветки, но не другие случайные ссылки в подкаталоге refs/).

Для автоматического разыменования объектов-меток используйте флаг -d или --dereference, так что вы можете сделать

	git show-ref --tags --dereference

чтобы получить список всех меток вместе с тем, на что они указывают.

ФАЙЛЫ

.git/refs/*, .git/packed-refs

GIT

Является частью пакета git[1]