Git
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>

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