簡體中文 ▾ 主題 ▾ 最新版本 ▾ 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提交中的sub/sub/dir。但是,可以透過傳遞--full-tree選項來忽略當前工作目錄。

選項

<tree-ish>

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='%(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

物件的型別(commitblobtree)。

objectname

物件的名稱。

objectsize[:padded]

blob 物件的大小(如果是committree則為“-”)。它還支援帶填充大小的格式“%(objectsize:padded)”。

path

物件的路徑名。

GIT

Git[1] 套件的一部分

scroll-to-top