SYNOPSIS
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>…]
DESCRIPTION
「/bin/ls -a」が現在の作業ディレクトリで行うことのように、特定のツリーオブジェクトの内容を一覧表示します。 ただし以下の点に注意してください:
-
動作は「/bin/ls」の動作とは少し異なり、「<path>」は一致するパターンのリストのみを示します。 したがって、(
-rなしで)ディレクトリ名を指定すると動作が異なり、引数の順序は重要ではありません。 -
<path>が現在の作業ディレクトリを基準にして取得されるという点で、動作は「/bin/ls」の動作と似ています。例えば、あなたの現在の作業ディレクトリが「sub」で、その下にサブディレクトリ「dir」がある場合は、「git ls-tree -r HEAD dir」を実行すると、「dir」ツリーの内容を一覧表示できます(つまり、「HEAD」の「sub/dir」) 。あなたが、ルートレベル以外のツリーを直接指定したいとします(たとえばgit ls-tree -r HEAD:sub dirと指定します)。しかし、この場合は結果としてHEADコミットでsub/sub/dirを要求したことになります(そしてそんなディレクトリはないので何も表示されない)。ただし、--full-treeプションを渡すと、現在の作業ディレクトリを無視できます(つまり、git ls-tree --fulltree -r HEAD:sub dirとすれば意図したとおりに動く)
OPTIONS
- <tree-ish>
-
ツリーっぽい何か(tree-ish)のID
-
-d -
名前付きツリーエントリ自体のみを表示し、その子供たちは表示しません。
-
-r -
サブツリーに再帰的に入っていきます
-
-t -
サブツリーに再帰的入っていく場合でも、ツリーエントリを表示します。
-rが渡されなかった場合は効果がありません。-dは-tの意味を含んでいます。 -
-l -
--long -
ブロブ(ファイル)エントリのオブジェクトサイズを表示します。
-
-z -
\0(NULバイト)出力での行終了であり、ファイル名をクォートしません。 詳細については、以下の OUTPUT FORMAT を参照してください。 -
--name-only -
--name-status -
(「long」出力ではなく)ファイル名のみを1行に1つずつリストします。
--object-onlyと組み合わせることはできません。 -
--object-only -
オブジェクトの名前のみを 1 行に 1 つずつリストします。
--name-onlyまたは--name-statusと組み合わせることはできません。 これは、--format='%(objectname)'を指定するのと同じですが、このオプションとその正確な形式の両方で、コマンドは一般的なフォーマット・メカニズムを経由する代わりに、手動で最適化されたコードパス(hand-optimized codepath)を使用します。 -
--abbrev[=<n>] -
40バイトの16進オブジェクト行全体を表示する代わりに、オブジェクトを一意に参照できる、少なくとも
<n>以上の長さの最短のプレフィックスを表示します。デフォルト以外の桁数は--abbrev=<n>で指定できます。(訳注:手元ではデフォルトは10桁で表示された。--abbrev=1とすると5桁(一部6桁)表示となった) -
--full-name -
現在の作業ディレクトリに関連するパス名を表示する代わりに、フルパス名を表示します。
-
--full-tree -
現在の作業ディレクトリを無視して、ルートレベルを起点として一覧表示します。
--full-nameの意味を含んでいます。 -
--format=<format> -
表示される各結果に対して <format> 文字列を適用します。その際 <format> 文字列中の
%(fieldname)は展開(interpolate)されます。 これはまた、%%を%に展開し、%xx(xxは 16 進数字) を 16 進コードxxのキャラクタに展開します。 たとえば、%00は\0(NUL) に、%09は\t(TAB) に、%0a は\n(LF) に展開されます。 指定した場合、--formatは、--longや`--name-only` や--object-onlyなどの他の書式変更(format-altering)オプションと組み合わせることはできません。 (訳注: sprintf の 書式文字列 みたいに自由な文章書ける。意味は無いけどgit ls-tree --format='hogehoge' HEADとかもOK) - [<path>…]
-
パスが指定されたら、それらを表示します(これは実際には生のパス名ではなく、一致するパターンのリストであることに注意してください)。 それ以外の場合は、ツリーのルートレベルを唯一のパス引数として暗黙的に使用します。
Output Format
ls-tree の出力形式は、--format オプションまたは --name-only
などの他の書式変更(format-altering)オプションのいずれかによって決定されます(上記 --format 参照)。
特定の --format
ディレクティブを使用することは、これらのオプションを使用することと同等ですが、フルフルのフォーマット機構を呼び出すと、適切なフォーマット・オプションを使用するよりも遅くなる可能性があります。
--format が既存のオプション ls-tree に正確にマッピングされる場合、適切な高速パス(appropriate faster
path)が使用されます。 したがって、デフォルトの形式は以下と同等です:
%(objectmode) %(objecttype) %(objectname)%x09%(path)
この出力形式は、 git update-index の --index-info--stdin が期待するものと互換性があります。
-l オプションを使用すると、形式が以下のように変わります
%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)
<objectname> のオブジェクトのサイズ(%(objectsize:padded))はバイト単位で表され、そのフィールドは最小幅 7
文字で右寄せされます。オブジェクト サイズは、 ブロブ (ファイル) エントリに対してのみ指定されます。 他のエントリでは、サイズの代わりに -
文字が使用されます。
-z オプションを指定しない場合、構成変数 core.quotePath
で説明されているように、「異常な」文字を含むパス名が引用符で囲まれます(git-config(1) を参照)。 -z
を使用すると、ファイル名がそのまま出力され、行はNULバイトで終了します。
Customized format:
%(fieldname) 表記を使用してさまざまなフィールドを展開できる --format
オプションを使用して、カスタム形式で表示することができます。 たとえば、 objectname フィールドと path
フィールドのみを気にする場合は、以下のような特定の --format で実行できます
git ls-tree --format='%(objectname) %(path)' <tree-ish>
FIELD NAMES
構造化フィールドのさまざまな値を使用して、結果の出力を展開できます。 出力行ごとに、以下の名前を使用できます:
- objectmode
-
オブジェクトのモード。
- objecttype
-
オブジェクトのタイプ(
commitまたはblobまたはtree)。 - objectname
-
オブジェクトの名前。
- objectsize[:padded]
-
blobオブジェクトのサイズ (commitまたはtreeの場合は-)。また、%(objectsize:padded)を使用したサイズのパディング形式もサポートしています。 - path
-
オブジェクトのパス名。
GIT
Part of the git(1) suite