Git
英語 ▾ トピック ▾ 最新バージョン ▾ 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 ディレクトリにいる場合、ツリーの内容(HEAD内のsub/dir)を表示するには、git ls-tree -r HEAD 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

ファイル名のみを一覧表示します(「long」出力ではなく)、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.quotePathについて説明されているように引用符で囲まれます(git-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