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