git-refs
Имя
git-refs — низкоуровневый доступ к ссылкам
Краткое описание
git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]
git refs verify [--strict] [--verbose]
git refs list [--count=<count>] [--shell|--perl|--python|--tcl]
[(--sort=<key>)…] [--format=<format>]
[--include-root-refs] [--points-at=<object>]
[--merged[=<object>]] [--no-merged[=<object>]]
[--contains[=<object>]] [--no-contains[=<object>]]
[(--exclude=<pattern>)…] [--start-after=<marker>]
[ --stdin | (<pattern>...)]
git refs exists <ref>
git refs optimize [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>] Описание
Эта команда предоставляет низкоуровневый доступ к ссылкам.
Команды
-
migrate -
Переносит хранилище ссылок между разными форматами.
-
verify -
Проверяет согласованность базы данных ссылок.
- list
-
Выводит список ссылок в репозитории с поддержкой фильтрации, форматирования и сортировки. Эта подкоманда является псевдонимом git-for-each-ref[1] и предоставляет те же возможности.
- exists
-
Проверяет, существует ли указанная ссылка. Возвращает код завершения 0, если ссылка существует, 2, если она отсутствует, и 1, если при поиске ссылки произошла ошибка, отличная от её отсутствия. Эта команда не проверяет, указывает ли ссылка на существующий объект.
- optimize
-
Оптимизирует ссылки, чтобы повысить производительность репозитория и уменьшить использование дискового пространства. Эта подкоманда является псевдонимом git-pack-refs[1] и предоставляет те же возможности.
Параметры
Следующие параметры относятся только к git refs migrate:
-
--ref-format=<format> -
Формат, в который нужно преобразовать хранилище ссылок. Возможные значения:
-
files -
для отдельных файлов с packed-refs. Используется по умолчанию.
-
reftable -
для формата reftable.
-
-
--dry-run -
Выполняет перенос, но не изменяет репозиторий. Перенесённые ссылки будут записаны в отдельный каталог, который можно просмотреть независимо. Имя каталога будет выведено в stdout. Это позволяет убедиться, что перенос выполняется ожидаемым образом, прежде чем приступать к фактическому переносу.
-
--reflog -
--no-reflog -
Выбирает, переносить ли данные reflog в новую подсистему или отбросить их. По умолчанию используется "--reflog", то есть данные переносятся.
Следующие параметры относятся только к git refs verify:
-
--strict -
Включает более строгую проверку ошибок. Предупреждения будут считаться ошибками. См. git-fsck[1].
-
--verbose -
При проверке согласованности базы данных ссылок выводит подробную информацию.
Следующие параметры относятся только к git refs list:
- <pattern>...
-
Если указаны один или несколько параметров
<pattern>, выводятся только ссылки, соответствующие хотя бы одному шаблону: с использованиемfnmatch(3) либо буквально; в последнем случае совпадение должно быть полным или охватывать начало строки до косой черты. -
--stdin -
Список шаблонов считывается из стандартного ввода, а не из списка аргументов.
-
--count=<count> -
Прекращает вывод после отображения
<count>ссылок. -
--sort=<key> -
Сортирует по имени поля
<key>. Чтобы сортировать значения в порядке убывания, добавьте префикс-. Если параметр не указан, используетсяrefname. Параметр--sort=<key> можно использовать несколько раз; в этом случае последний ключ становится основным. -
--format[=<format>] -
Строка, подставляющая значения
%(fieldname) для выводимой ссылки и объекта, на который она указывает. Кроме того, строковый литерал%%преобразуется в%, а%xx— гдеxx— шестнадцатеричные цифры — преобразуется в символ с шестнадцатеричным кодомxx. Например,%00преобразуется в \0 (NUL),%09— в \t (TAB), а%0a— в \n (LF).
Если параметр не указан, <format> по умолчанию принимает значение %(objectname) SPC %(objecttype) TAB %(refname).
-
--color[=<when>] -
Учитывает все цвета, заданные параметром
--format. Поле<when>должно иметь одно из значений:always,neverилиauto(если<when>отсутствует, поведение такое же, как при указанииalways). -
--shell -
--perl -
--python -
--tcl -
Если указан этот параметр, строки, подставляемые вместо заполнителей
%(fieldname), заключаются в кавычки как строковые литералы, подходящие для указанного языка программирования. Это позволяет создать фрагмент скрипта, который можно непосредственно выполнить с помощью "eval". -
--points-at=<object> -
Выводит только ссылки, указывающие на указанный объект.
-
--merged[=<object>] -
Выводит только ссылки, вершины которых достижимы из указанного коммита (если он не указан, используется
HEAD). -
--no-merged[=<object>] -
Выводит только ссылки, вершины которых недостижимы из
<object>(если он не указан, используетсяHEAD). -
--contains[=<object>] -
Выводит только ссылки, содержащие
<object>(если он не указан, используетсяHEAD). -
--no-contains[=<object>] -
Выводит только ссылки, не содержащие
<object>(если он не указан, используетсяHEAD). -
--ignore-case -
Сортировка и фильтрация ссылок выполняются без учёта регистра.
-
--omit-empty -
Не выводит символ новой строки после отформатированных ссылок, если результат форматирования — пустая строка.
-
--exclude=<excluded-pattern> -
Если указаны один или несколько параметров
--exclude, выводятся только ссылки, не соответствующие ни одному параметру<excluded-pattern>. Для сопоставления используются те же правила, что и для<pattern>выше. -
--include-root-refs -
Помимо обычных ссылок выводит корневые ссылки (
HEADи псевдоссылки). -
--start-after=<marker> -
Позволяет разбивать вывод на страницы, пропуская ссылки вплоть до указанного маркера включительно. При постраничном выводе следует учитывать, что между вызовами ссылки могут удаляться, изменяться или добавляться. В вывод попадут только ссылки, которые лексикографически следуют за маркером. Вывод начинается с первой ссылки, расположенной после маркера в алфавитном порядке. Нельзя использовать вместе с параметрами
--sort=<key> или--stdin, а также с аргументами<pattern>, ограничивающими набор ссылок.
Следующие параметры относятся только к git refs optimize:
- --all
-
По умолчанию команда упаковывает все теги и ссылки, которые уже упакованы, а остальные ссылки не затрагивает. Это связано с тем, что ветки предполагается активно разрабатывать, а упаковка их вершин не повышает производительность. Этот параметр также упаковывает все ссылки, кроме скрытых, повреждённых и символических. Полезен для репозиториев с большим количеством веток, представляющих исторический интерес.
- --no-prune
-
Обычно после упаковки команда удаляет свободные ссылки из иерархии
$GIT_DIR/refs. Этот параметр запрещает удаление. - --auto
-
Упаковывает ссылки по мере необходимости, в зависимости от текущего состояния базы данных ссылок. Поведение зависит от формата ссылок, используемого в репозитории, и может измениться в будущем.
-
"files": свободные ссылки упаковываются в файл
packed-refsв зависимости от соотношения числа свободных ссылок и размера файлаpacked-refs. Чем больше файлpacked-refs, тем больше свободных ссылок должно накопиться до повторной упаковки. -
"reftable": таблицы уплотняются таким образом, чтобы образовать геометрическую последовательность. Для двух таблиц N и N+1, где N+1 — более новая, сохраняется условие, что N как минимум вдвое больше N+1. Уплотняются только таблицы, нарушающие это условие.
-
- --include <pattern>
-
Упаковывает ссылки по шаблону
glob(7). При повторном использовании этого параметра добавляются новые шаблоны включения. Если ссылка одновременно попадает под действие--includeи--exclude, приоритет имеет--exclude. Использование--includeисключит все теги из включения по умолчанию. Символические и повреждённые ссылки никогда не упаковываются. При использовании вместе с--allпараметр ничего не делает. Используйте--no-include, чтобы очистить список шаблонов и задать его заново. - --exclude <pattern>
-
Не упаковывает ссылки, соответствующие заданному шаблону
glob(7). При повторном использовании этого параметра добавляются новые шаблоны исключения. Используйте--no-exclude, чтобы очистить список шаблонов и задать его заново. Если ссылка уже упакована, включение её с помощью--excludeне приведёт к её распаковке.При использовании вместе с
--allупаковываются только свободные ссылки, не соответствующие ни одному из указанных шаблонов--exclude.При использовании вместе с
--includeупаковываются ссылки, указанные в--include, за вычетом ссылок, указанных в--exclude.
Известные ограничения
В текущей реализации переноса формата ссылок есть несколько известных ограничений:
-
Нельзя переносить репозитории, в которых есть рабочие деревья.
-
Во время переноса невозможно заблокировать одновременную запись в репозиторий. Одновременная запись может привести к несогласованному состоянию перенесённого репозитория. Предполагается, что пользователи будут блокировать запись на более высоком уровне. Если репозиторий зарегистрирован для планового обслуживания, рекомендуется сначала отменить его регистрацию с помощью git-maintenance(1).
Возможно, со временем эти ограничения будут сняты.
refs
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-refs