日本語 ▾ トピック ▾ 最新バージョン ▾ 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>

tree-ish のID。

-d

指定されたツリーエントリ自体のみを表示し、その子孫は表示しません。

-r

サブツリーに再帰します。

-t

再帰する場合でもツリーエントリを表示します。`-r` が渡されなかった場合は効果がありません。`-d` は `-t` を意味します。

-l
--long

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

-z

出力で\0 (NULL) 区切りを使用し、ファイル名を引用符で囲まないようにします。詳細については、以下の「出力フォーマット」を参照してください。

--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)` を補間する文字列です。また、`%%` は `%` に、`%xNN` (ここで `NN` は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文字で右揃えされます。オブジェクトサイズはブロブ(ファイル)エントリのみに与えられ、他のエントリにはサイズの代わりに「-」文字が使用されます。

`-z` オプションがない場合、「特殊な」文字を含むパス名は、設定変数 `core.quotePath` で説明されているように引用符で囲まれます(git-config[1] を参照)。`-z` を使用すると、ファイル名がそのまま出力され、行はNULバイトで終端されます。

カスタムフォーマット

`--format` オプションを使用することで、カスタムフォーマットで出力することが可能です。このオプションは `%(fieldname)` 表記を用いて異なるフィールドを補間できます。例えば、「objectname」と「path」フィールドのみに関心がある場合、特定の「--format」を指定して実行できます。

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

フィールド名

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

objectmode

オブジェクトのモード。

objecttype

オブジェクトのタイプ(`commit`、`blob`、または `tree`)。

objectname

オブジェクトの名前。

objectsize[:padded]

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

path

オブジェクトのパス名。

GIT

git[1] スイートの一部

scroll-to-top