Spec-Zone.ru › Git

git-ls-tree

Имя

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

Синтаксис

git ls-tree [-d] [-r] [-t] [-l] [-z]
            [--name-only] [--name-status] [--object-only] [--full-name] [--full-tree] [--abbrev[=<n>]] [--format=<format>]
            <tree-ish> [<path>…​]

Описание

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

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

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

Опции

<tree-ish>

Идентификатор tree-ish.

-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=<format>

Строка, которая интерполирует %(fieldname) из отображаемого результата. Она также интерполирует %% до %, и %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, которая может интерполировать различные поля с использованием обозначения %(fieldname). Например, если вас интересуют только поля «objectname» и «path», вы можете выполнить команду со специфичным "--format" следующим образом:

git ls-tree --format='%(objectname) %(path)' <tree-ish>

Имена полей

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

objectmode

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

objecttype

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

objectname

Имя объекта.

objectsize[:padded]

Размер объекта blob («-», если это commit или tree). Поддерживает также форматирование размера с заполнением: «%(objectsize:padded)».

path

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

ls-tree

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-ls-tree

Spec-Zone.ru

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