設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.42.1 → 2.47.0 沒有變更
-
2.42.0
08/21/23
- 2.36.1 → 2.41.2 沒有變更
-
2.36.0
04/18/22
- 2.30.1 → 2.35.8 沒有變更
-
2.30.0
12/27/20
- 2.22.1 → 2.29.3 沒有變更
-
2.22.0
06/07/19
- 2.14.6 → 2.21.4 沒有變更
-
2.13.7
05/22/18
- 2.10.5 → 2.12.5 沒有變更
-
2.9.5
07/30/17
- 2.1.4 → 2.8.6 沒有變更
-
2.0.5
12/17/14
概要
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>
GIT
屬於 git[1] 套件的一部分