Spec-Zone.ru › Git

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API