日本語 ▾ トピック ▾ 最新バージョン ▾ 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> は現在の作業ディレクトリからの相対パスとして解釈されます。例えば、ディレクトリ sub の中にディレクトリ dir がある場合、git ls-tree -r HEAD dir を実行すると、ツリー(HEAD内のsub/dir)の内容を一覧表示できます。この場合、ルートレベルではないツリー(例:git ls-tree -r HEAD:sub dir)を指定すると、HEADコミットでsub/sub/dirを要求することになるため、指定しない方が良いでしょう。ただし、--full-tree オプションを渡すことで、現在の作業ディレクトリを無視できます。

オプション

<tree-ish>

ツリーishのID。

-d

名前付きツリーエントリ自体のみを表示し、その子を表示しない。

-r

サブツリーを再帰的に処理する。

-t

ツリーエントリを再帰的に処理する場合でも表示する。-rが渡されなかった場合は効果なし。-d-tを意味する。

-l
--long

BLOB (ファイル) エントリのオブジェクトサイズを表示する。

-z

出力で\0改行を使用し、ファイル名を引用符で囲まない。詳細については、以下の出力形式を参照してください。

--name-only
--name-status

ファイル名のみを1行に1つずつリストする("長い"出力ではなく)。--object-onlyとは組み合わせられない。

--object-only

オブジェクトの名前のみを1行に1つずつリストする。--name-onlyまたは--name-statusとは組み合わせられない。これは--format='%(objectname)を指定することと同等ですが、このオプションとこの正確な形式の両方で、コマンドは汎用フォーマットメカニズムを経由せずに、手動で最適化されたコードパスを使用します。

--abbrev[=<n>]

40バイトの完全な16進数オブジェクト行ではなく、オブジェクトを一意に参照する、少なくとも <n> 桁の16進数である最短のプレフィックスを表示します。デフォルト以外の桁数は --abbrev=<n> で指定できます。

--full-name

現在の作業ディレクトリからの相対パス名ではなく、完全なパス名を表示する。

--full-tree

一覧表示を現在の作業ディレクトリに限定しない。--full-name を意味する。

--format=<format>

表示される結果から%(fieldname)を補間する文字列です。また、%%%に、%xNNNNは16進数)を16進数コード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.quotePathgit-config[1]を参照)で説明されているように引用符で囲まれます。-zを使用すると、ファイル名がそのまま出力され、行はNULバイトで終端されます。

カスタム形式

--formatオプションを使用すると、%(fieldname)記法でさまざまなフィールドを補間することで、カスタム形式で出力することができます。例えば、「objectname」と「path」フィールドのみに関心がある場合、次のように特定の「--format」を指定して実行できます。

git ls-tree --format='%(objectname) %(path)' <tree-ish>

フィールド名

構造化されたフィールドのさまざまな値を使用して、結果の出力に補間できます。出力される各行について、以下の名前を使用できます。

objectmode

オブジェクトのモード。

objecttype

オブジェクトの型(commitblob、またはtree)。

objectname

オブジェクトの名前。

objectsize[:padded]

blobオブジェクトのサイズ(commitまたはtreeの場合は"-")。また、"% (objectsize:padded)"でパディングされた形式のサイズもサポートしています。

path

オブジェクトのパス名。

GIT

git[1]スイートの一部

scroll-to-top