## 名称

git-ls-tree - 列出树对象的内容

## 概要

    git ls-tree [-d] [-r] [-t] [-l] [-z]            [--name-only] [--name-status] [--full-name] [--full-tree] [--abbrev[=<n>]]            <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>

Id of a tree-ish.

-d

仅显示已命名的树条目本身，而不是其子节点。

-r

递归到子树中。

-t

甚至在进行递归时也显示树条目。如果`-r`未通过，则无效。`-d`意味着`-t`。

-l --long

显示 blob（文件）条目的对象大小。

-z

\ 0 行输出终止，不要引用文件名。有关更多信息，请参阅下面的 OUTPUT FORMAT。

--name-only --name-status

仅列出文件名（而不是“长”输出），每行一个。

--abbrev=<n>

不显示完整的40字节十六进制对象行，只显示部分前缀。非默认位数可以用--abbrev = <n> 来指定。

--full-name

显示相对于当前工作目录的路径名称，而不是显示完整的路径名称。

--full-tree

不要将列表限制到当前工作目录。意味着 --full-name。

<path>…

当给出路径时，显示它们（请注意，这不是真正的原始路径名，而是一组匹配的模式列表）。否则，隐式使用树的根级作为唯一的路径参数。

## 输出格式

    <mode> SP <type> SP <object> TAB <file>

这种输出格式是什么兼容`--index-info --stdin`的`git update-index`期望。

当使用该`-l`选项时，格式更改为

    <mode> SP <type> SP <object> SP <object size> TAB <file>

由<object>标识的对象大小以字节为单位，右对齐，最小宽度为7个字符。对象大小仅适用于 blob（文件）条目; 对于其他条目，`-`字符用于代替大小。

如果没有这个`-z`选项，带有“不寻常”字符的路径名将按照配置变量的说明引用`core.quotePath`（请参阅 git-config [1]）。使用`-z`文件名是逐字输出的，并且该行由 NUL 字节终止。