Русский ▾ Topics ▾ Latest version ▾ git-ls-tree last updated in 2.42.0

НАЗВАНИЕ

git-ls-tree - Вывод содержимого объекта-дерева

ОБЗОР

git ls-tree [-d] [-r] [-t] [-l] [-z]
	    [--name-only] [--name-status] [--object-only] [--full-name] [--full-tree] [--abbrev[=<n>]] [--format=<формат>]
	    <указатель-дерева> [<путь>…​]

ОПИСАНИЕ

Выводит содержимое заданного объекта-дерева, подобно тому, как "/bin/ls -a" делает в текущем рабочем каталоге. Обратите внимание, что:

  • поведение немного отличается от поведения "/bin/ls" тем, что <путь> обозначает просто список шаблонов для сопоставления, например, указание имени каталога (без -r) будет вести себя иначе, а порядок аргументов не имеет значения.

  • поведение похоже на поведение "/bin/ls" в том, что <путь> рассматривается как относительный к текущему рабочему каталогу. Например, когда вы находитесь в каталоге sub, в котором есть каталог dir, вы можете выполнить git ls-tree -r HEAD dir, чтобы вывести содержимое дерева (то есть sub/dir в HEAD). В этом случае вы не хотите указывать дерево, которое не находится на корневом уровне (например, git ls-tree -r HEAD:sub dir), так как это приведёт к запросу sub/sub/dir в коммите HEAD. Однако текущий рабочий каталог можно игнорировать, передав параметр --full-tree.

ПАРАМЕТРЫ

<указатель-дерева>

Идентификатор указателя-дерева.

-d

Показать только саму именованную запись дерева, а не её дочерние элементы.

-r

Рекурсивно обходить поддеревья.

-t

Показывать записи дерева, даже если они будут рекурсивно обработаны. Не имеет эффекта, если -r не был передан. -d подразумевает -t.

-l
--long

Показать размер объекта для записей blob-объектов (файлов).

-z

Завершение строк символом \0 в выводе и не заключать имена файлов в кавычки. Дополнительную информацию см. в разделе ФОРМАТ ВЫВОДА ниже.

--name-only
--name-status

Выводить только имена файлов (вместо «длинного» вывода), по одному в строке. Не может использоваться вместе с --object-only.

--object-only

Выводить только имена объектов, по одному в строке. Не может использоваться вместе с --name-only или --name-status. Это эквивалентно указанию --format='%(objectname), но для этого параметра и этого точного формата команда использует ручную оптимизацию, а не проходит через общий механизм форматирования.

--abbrev[=<n>]

Вместо отображения полных 40-байтовых шестнадцатеричных строк объектов, показывать кратчайший префикс длиной не менее <n> шестнадцатеричных цифр, который однозначно идентифицирует объект. Некоторое количество цифр, отличное от стандартного, можно указать с помощью --abbrev=<n>.

--full-name

Вместо отображения имён путей относительно текущего рабочего каталога, показывать полные имена путей.

--full-tree

Не ограничивать список текущим рабочим каталогом. Подразумевает --full-name.

--format=<формат>

Строка, которая интерполирует %(имя-поля) из отображаемого результата. Она также интерполирует %% в % и %xNN, где NN — шестнадцатеричные цифры, интерполирует в символ с шестнадцатеричным кодом NN; например, %x00 интерполирует в \0 (NUL), %x09 в \t (TAB), а %x0a в \n (LF). При указании --format не может использоваться вместе с другими параметрами, изменяющими формат, включая --long, --name-only и --object-only.

[<path>…​]

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

Формат вывода

Формат вывода ls-tree определяется либо параметром --format, либо другими параметрами, изменяющими формат, такими как --name-only и т.д. (см. --format выше).

Использование определённых директив --format эквивалентно использованию этих параметров, но вызов полного механизма форматирования может быть медленнее, чем использование соответствующего параметра форматирования.

В случаях, когда --format точно соответствует существующему параметру, ls-tree будет использовать соответствующий более быстрый путь. Таким образом, формат по умолчанию эквивалентен:

%(objectmode) %(objecttype) %(objectname)%x09%(path)

Этот формат вывода совместим с тем, что ожидает --index-info --stdin от git update-index.

При использовании параметра -l формат меняется на

%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)

Размер объекта, идентифицируемый <objectname>, указывается в байтах и выравнивается по правому краю с минимальной шириной 7 символов. Размер объекта указывается только для записей blob-объектов (файлов); для других записей вместо размера используется символ -.

Без параметра -z пути с «необычными» символами берутся в кавычки, как это описано для переменной конфигурации core.quotePath (см. git-config[1]). С параметром -z имя файла выводится без изменений, а строка завершается байтом NUL.

Пользовательский формат:

Можно печатать в пользовательском формате, используя параметр --format, который может интерполировать различные поля с помощью обозначения %(имя-поля). Например, если вас интересуют только поля "objectname" и "path", вы можете выполнить команду с определённым "--format", например

git ls-tree --format='%(objectname) %(path)' <указатель-дерева>

ИМЕНА ПОЛЕЙ

Различные значения из структурированных полей могут использоваться для интерполяции в результирующий вывод. Для каждой выводимой строки можно использовать следующие имена:

objectmode

Режим объекта.

objecttype

Тип объекта (commit, blob или tree).

objectname

Имя объекта.

objectsize[:padded]

Размер объекта blob ("-", если это commit или tree). Также поддерживается дополненный формат размера с помощью "%(objectsize:padded)".

путь

Путь к объекту.

GIT

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