SYNOPSIS
gitls-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」) 。あなたが、ルートレベル以外のツリーを直接指定したいとします(たとえば
gitls-tree-rHEAD:subdirと指定します)。しかし、この場合は結果としてHEADコミットでsub/sub/dirを要求したことになります(そしてそんなディレクトリはないので何も表示されない)。ただし、--full-treeプションを渡すと、現在の作業ディレクトリを無視できます(つまり、gitls-tree--fulltree-rHEAD:subdirとすれば意図したとおりに動く)
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)されます。 これはまた %% を % に展開します。 %xNN (NNは 16 進数) を 16 進コードNNに展開し、 たとえば`%x00` は \0 (NUL) になります。 %x09 は \t (TAB) に、 %x0a は \n (LF) に展開されます。--formatを指定した場合、--longや--name-onlyや--object-onlyなどの他の書式変更(format-altering)オプションと組み合わせることはできません。 (訳注: sprintf の 書式文字列 みたいに自由な文章書ける。意味は無いけどgitls-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