English ▾ 主题 ▾ 最新版本 ▾ git-ls-tree 上次更新于 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=<format>]
	    <tree-ish> [<path>…​]

描述

列出给定树对象的内容,类似于 "/bin/ls -a" 在当前工作目录中的作用。请注意

  • 该行为与 "/bin/ls" 略有不同,<path> 仅表示要匹配的模式列表,例如,指定目录名称(不带 -r)的行为会有所不同,并且参数的顺序无关紧要。

  • 该行为类似于 "/bin/ls",<path> 被视为相对于当前工作目录。例如,当您位于具有目录 dir 的目录 sub 中时,您可以运行 git ls-tree -r HEAD dir 以列出树的内容(即 HEAD 中的 sub/dir)。在这种情况下,您不希望提供不在根级别的树(例如 git ls-tree -r HEAD:sub dir),因为这会导致请求 HEAD commit 中的 sub/sub/dir。但是,可以通过传递 --full-tree 选项来忽略当前工作目录。

选项

<tree-ish>

树对象的 ID。

-d

仅显示指定的树条目本身,不显示其子条目。

-r

递归到子树中。

-t

即使在递归时也显示树条目。如果未传递 -r 则无效。-d 隐含 -t

-l
--long

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

-z

输出中使用 \0 行终止符,并且不引用文件名。有关更多信息,请参见下面的“输出格式”。

--name-only
--name-status

仅列出文件名(而不是“long”输出),每行一个。不能与 --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)

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

当使用 -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, blobtree)。

objectname

对象的名称。

objectsize[:padded]

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

path

对象的路径名。

GIT

属于 git[1] 套件的一部分

scroll-to-top