Git
简体中文 ▾ 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",因为 <路径> 是相对于当前工作目录而言的。 例如,当你在一个有目录 dir 的目录 sub 中时,你可以运行 git ls-tree -r HEAD dir 来列出目录树(即 HEAD 中的 sub/dir )的内容。 在这种情况下,你不会想给出一个不在根目录下的树(例如 git ls-tree -r HEAD:sub dir),因为这会导致在 HEAD 提交中询问 sub/sub/dir。 不过,可以通过 --full-tree 选项忽略当前工作目录。

选项

<tree-ish>

树状对象 ID。

-d

只显示已命名的目录条目本身,不显示其子条目。

-r

向子树递归。

-t

即使在递归时也显示树条目。如果未传递 -r,则无影响。-d 意味着 -t

-l
--long

显示 blob(文件)条目的对象大小。

-z

输出以 \0 行结束,文件名不加引号。 更多信息,请参阅下面的输出格式。

--name-only
--name-status

只列出文件名(而不是 “长” 输出),每行一个。 不能与 --object-only 结合使用。

--object-only

仅列出对象名称,每行一个。不能与 --name-only--name-status 结合使用。 这等同于指定 --format='%(对象名)' ,但对于该选项和精确格式,命令都采用手工优化的代码路径,而不是通过通用格式化机制。

--abbrev[=<n>]

不显示完整的 40 字节十六进制对象行,而是显示至少 <n> 个十六进制数字长度的最短前缀,该前缀唯一指向对象。 可以使用 --abbrev=<n> 指定非默认位数。

--full-name

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

--full-tree

不将列表限制在当前工作目录。 暗含 --full-name.

--format=<格式>

一个字符串,从显示的结果中插值出 %(字段名)。它还将 %% 插值为 %,将 %xNN 插值为十六进制代码为 NN 的字符;例如,将 %x00 插值为 \0 (NUL),将 %x09 插值为 \t (TAB),将 %x0a 插值为 \n (LF)。 当指定时,--format 不能与其他改变格式的选项结合使用,包括 --long--name-only--object-only

[<路径>…​]

如果给出路径,则显示路径(注意这并不是真正的原始路径名,而是要匹配的模式列表)。 否则会隐式地将树的根层作为唯一的路径参数。

输出格式

ls-tree 的输出格式由 --format 选项或其他改变格式的选项(如 --name-only 等)决定(参见上文的 --format )。

使用某些 --format 指令等同于使用这些选项,但调用完整的格式化机制可能比使用适当的格式化选项要慢。

--format 与现有选项完全对应的情况下,ls-tree 将使用适当的更快路径。因此,默认格式相当于:

%(对象模式) %(对象类型) %(对象名)%x09%(路径)

该输出格式与 git update-index--index-info--stdin 所期望的格式兼容。

当使用 -l 选项时,格式变为

%(对象模式) %(对象类型) %(对象名) %(对象大小:padded)%x09%(路径)

<对象名> 标识的对象大小以字节为单位,右对齐,最小宽度为 7 个字符。 对象大小仅用于 blobs(文件)条目;对于其他条目,使用 - 字符代替大小。

如果没有 -z 选项,带 “不常见” 字符的路径名会被加上引号,正如配置变量 core.quotePath 所解释的那样(参见 git-config[1])。 使用 -z 选项,文件名将被逐字输出,并以 NUL 字节结束。

定制格式:

使用 --format 选项可以自定义打印格式,该选项可以使用 %(fieldname) 符号对不同字段进行插值。例如,如果只关心 “对象名” 和 “路径” 字段,可以使用特定的 "--format" 执行,如

git ls-tree --format='%(对象名) %(路径)' <树状对象>

字段名

结构化字段中的各种值可用于插值到输出结果中。每个输出行可以使用以下名称:

objectmode

对象的模式。

objecttype

对象的类型(commitblobtree)。

objectname

对象的名称。

objectsize[:padded]

blob 对象的大小(如果是 committree ,则为 "-" )。 它还支持 "%(对象大小:padded)" 的填充大小格式。

path

对象的路径名。

GIT

属于 git[1] 文档

scroll-to-top