日本語 ▾ トピック ▾ 最新バージョン ▾ git-ls-files は 2.46.1 で最終更新されました

名前

git-ls-files - インデックスおよびワーキングツリー内のファイルに関する情報を表示する

概要

git ls-files [-z] [-t] [-v] [-f]
		[-c|--cached] [-d|--deleted] [-o|--others] [-i|--ignored]
		[-s|--stage] [-u|--unmerged] [-k|--killed] [-m|--modified]
		[--resolve-undo]
		[--directory [--no-empty-directory]] [--eol]
		[--deduplicate]
		[-x <pattern>|--exclude=<pattern>]
		[-X <file>|--exclude-from=<file>]
		[--exclude-per-directory=<file>]
		[--exclude-standard]
		[--error-unmatch] [--with-tree=<tree-ish>]
		[--full-name] [--recurse-submodules]
		[--abbrev[=<n>]] [--format=<format>] [--] [<file>…​]

説明

このコマンドは、インデックス内のファイルリストと実際のワーキングディレクトリのリストを結合し、それらの様々な組み合わせを表示します。

表示するファイルを決定するためにいくつかのフラグを使用できます。また、インデックス内に複数のエントリがある場合や、関連するファイル選択オプションに対して複数のステータスが適用される場合、各ファイルが複数回表示されることがあります。

オプション

-c
--cached

Gitのインデックスにキャッシュされているすべてのファイル、つまり追跡されているすべてのファイルを表示します。(これは、-c/-s/-d/-o/-u/-k/-m/--resolve-undo オプションが指定されていない場合のデフォルトです。)

-d
--deleted

ステージされていない削除があるファイルを表示します

-m
--modified

ステージされていない変更があるファイルを表示します (ステージされていない削除もステージされていない変更としてカウントされることに注意してください)

-o
--others

出力にその他のファイル (つまり、追跡されていないファイル) を表示します

-i
--ignored

出力に無視されたファイルのみを表示します。明示的な -c または -o のいずれかと一緒に使用する必要があります。インデックス内のファイルを表示する場合 (つまり、-c と一緒に使用する場合)、除外パターンに一致するファイルのみを出力します。「その他の」ファイルを表示する場合 (つまり、-o と一緒に使用する場合)、除外パターンに一致するファイルのみを表示します。標準の無視ルールは自動的にアクティブになりません。したがって、--exclude* オプションの少なくとも1つが必要です。

-s
--stage

出力に、ステージされたコンテンツのモードビット、オブジェクト名、ステージ番号を表示します。

--directory

ディレクトリ全体が「その他」として分類されている場合、その名前 (末尾にスラッシュが付く) のみを表示し、その内容全体は表示しません。-o/--others なしでは効果がありません。

--no-empty-directory

空のディレクトリをリストしません。--directory なしでは効果がありません。

-u
--unmerged

出力にマージされていないファイルに関する情報を表示しますが、その他の追跡されたファイルは表示しません (--stage を強制し、--cached をオーバーライドします)。

-k
--killed

追跡されたファイルをファイルシステムに書き込むことを妨げるファイル/ディレクトリの競合により削除する必要がある、ファイルシステム上の追跡されていないファイルを表示します。

--resolve-undo

インデックスに解決取り消し情報を持つファイルを、その解決取り消し情報とともに表示します。(解決取り消し情報は、「git checkout -m $PATH」を実装するために使用されます。つまり、誤って解決されたマージの競合を再作成するために使用されます)

-z

出力でヌル文字 (\0) で行を終端し、ファイル名を引用しません。詳細については、以下の出力セクションを参照してください。

--deduplicate

ファイル名のみを表示する場合、マージ中の複数ステージや、--deleted および --modified オプションを同時に指定することによって発生する重複を抑制します。-t--unmerged、または --stage オプションのいずれかが使用されている場合、このオプションは効果がありません。

-x <pattern>
--exclude=<pattern>

パターンに一致する追跡されていないファイルをスキップします。パターンはシェルワイルドカードパターンであることに注意してください。詳細については、以下の除外パターンセクションを参照してください。

-X <file>
--exclude-from=<file>

<file> から除外パターンを読み取ります。1行に1つ。

--exclude-per-directory=<file>

<file> 内のディレクトリとそのサブディレクトリにのみ適用される追加の除外パターンを読み取ります。Porcelain コマンドの動作をエミュレートしようとしている場合、代わりに --exclude-standard オプションを使用する方が簡単で徹底的です。

--exclude-standard

標準のGit除外を追加します: .git/info/exclude、各ディレクトリの .gitignore、およびユーザーのグローバル除外ファイル。

--error-unmatch

いずれかの <file> がインデックスに存在しない場合、これをエラーとして扱います (1を返します)。

--with-tree=<tree-ish>

--error-unmatch を使用してユーザー指定の <file> (つまりパスパターン) 引数をパスに展開する際に、指定された <tree-ish> 以降インデックスから削除されたパスがまだ存在するかのように扱います。このオプションを -s または -u オプションと一緒に使用しても意味がありません。

-t

ファイル名とともにステータスタグを表示します。スクリプト目的では、git-status[1]--porcelain および git-diff-files[1]--name-status がほとんどの場合、優れた代替手段であることに注意してください。よりユーザーフレンドリーな代替手段については、git-status[1]--short または git-diff[1]--name-status を参照してください。

このオプションは、各ファイル名を表示する理由をステータスタグの形式で提供します (その後にスペースとファイル名が続きます)。ステータスタグはすべて以下のリストの一文字です。

H

マージされていない、またはワークツリーをスキップするファイルではない、追跡されたファイル

S

ワークツリーをスキップする追跡されたファイル

M

マージされていない追跡されたファイル

R

ステージされていない削除/削除がある追跡されたファイル

C

ステージされていない変更/変更がある追跡されたファイル

K

追跡されたファイルのチェックアウトを妨げるファイル/ディレクトリの競合の一部である追跡されていないパス

?

追跡されていないファイル

U

解決取り消し情報を持つファイル

-v

-t と似ていますが、assume unchanged とマークされたファイル (git-update-index[1] を参照) には小文字を使用します。

-f

-t と似ていますが、fsmonitor valid とマークされたファイル (git-update-index[1] を参照) には小文字を使用します。

--full-name

サブディレクトリから実行された場合、このコマンドは通常、現在のディレクトリからの相対パスを出力します。このオプションは、プロジェクトのトップディレクトリからの相対パスを出力するよう強制します。

--recurse-submodules

リポジトリ内のアクティブな各サブモジュールで ls-files を再帰的に呼び出します。現在、--cached および --stage モードのみがサポートされています。

--abbrev[=<n>]

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

--debug

ファイルを記述する各行の後に、そのキャッシュエントリに関する追加データを追加します。これは手動検査のために可能な限り多くの情報を表示することを意図しており、正確な形式はいつでも変更される可能性があります。

--eol

ファイルの <eolinfo> と <eolattr> を表示します。<eolinfo> は、"text" 属性が "auto" (または未設定で core.autocrlf が false でない) の場合にGitが使用するファイルコンテンツ識別です。<eolinfo> は "-text", "none", "lf", "crlf", "mixed", または "" のいずれかです。

"" は、ファイルが通常のファイルではないか、インデックスにないか、ワーキングツリーでアクセスできないことを意味します。

<eolattr> は、チェックアウトまたはコミット時に使用される属性で、"", "-text", "text", "text=auto", "text eol=lf", "text eol=crlf" のいずれかです。Git 2.10 以降、「text=auto eol=lf」および「text=auto eol=crlf」がサポートされています。

インデックス内の <eolinfo> ("i/<eolinfo>") とワーキングツリー内の <eolinfo> ("w/<eolinfo>") の両方が通常のファイルに対して表示され、その後に ("attr/<eolattr>") が続きます。

--sparse

インデックスが疎の場合、疎ディレクトリを内包するファイルを展開せずに表示します。疎ディレクトリは「x/」のように末尾にスラッシュが付いて表示されます。

--format=<format>

表示される結果から %(fieldname) を展開する文字列です。また、%%% に、%xXX (XX は16進数) を16進コード XX の文字に展開します。例えば、%x00\0 (NUL) に、%x09\t (TAB) に、%x0a\n (LF) に展開されます。--format は -s, -o, -k, -t, --resolve-undo, および --eol と組み合わせることはできません。

--

これ以上引数をオプションとして解釈しません。

<file>

表示するファイル。ファイルが指定されていない場合、他の指定された条件に一致するすべてのファイルが表示されます。

出力

git ls-files はファイル名のみを出力しますが、--stage が指定された場合は以下を出力します。

[<tag> ]<mode> <object> <stage> <file>

git ls-files --eol は i/<eolinfo><SPACES>w/<eolinfo><SPACES>attr/<eolattr><SPACE*><TAB><file> を表示します。

git ls-files --unmergedgit ls-files --stage は、マージされていないパスの詳細情報を調べるために使用できます。

マージされていないパスの場合、単一のモード/SHA-1ペアを記録する代わりに、インデックスは最大3つのそのようなペアを記録します。ステージ1のツリーOから1つ、ステージ2のAから1つ、ステージ3のBから1つです。この情報は、ユーザー (またはポーセレン) が最終的にパスに記録されるべき内容を確認するために使用できます。(状態の詳細については、git-read-tree[1] を参照してください)

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

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

git ls-files --format='%(objectname) %(path)'

フィールド名

各パスの表示方法は、--format=<format> オプションを使用することでカスタマイズできます。<format> 文字列内の %(fieldname) は、インデックスエントリの様々な側面に対応するフィールド名に展開されます。以下の「フィールド名」が認識されます。

objectmode

インデックスに記録されているファイルのモード。

objecttype

インデックスに記録されているファイルのオブジェクトタイプ。

objectname

インデックスに記録されているファイルの名前。

objectsize[:padded]

インデックスに記録されているファイルのオブジェクトサイズ (オブジェクトが commit または tree の場合は "-" ) 。「%(objectsize:padded)」でパディングされた形式のサイズもサポートしています。

stage

インデックスに記録されているファイルのステージ。

eolinfo:index
eolinfo:worktree

パスのインデックス内またはワーキングツリー内のコンテンツの <eolinfo> (--eol オプションの説明を参照)。

eolattr

パスに適用される <eolattr> (--eol オプションの説明を参照)。

path

インデックスに記録されているファイルのパス名。

除外パターン

git ls-files は、--others または --ignored フラグが指定された場合に、ディレクトリツリーを走査して表示するファイルを見つける際に、「除外パターン」のリストを使用できます。gitignore[5] は、除外パターンの形式を指定します。

これらの除外パターンは、以下の場所から、この順序で指定できます。

  1. コマンドラインフラグ --exclude=<pattern> は単一のパターンを指定します。パターンはコマンドラインに表示された順序で並べられます。

  2. コマンドラインフラグ --exclude-from=<file> は、パターンリストを含むファイルを指定します。パターンはファイルに表示された順序で並べられます。

  3. コマンドラインフラグ --exclude-per-directory=<name> は、git ls-files が検査する各ディレクトリ内のファイル名を指定します。通常は .gitignore です。より深いディレクトリのファイルが優先されます。パターンはファイルに表示された順序で並べられます。

コマンドラインで --exclude で指定されたパターン、または --exclude-from で指定されたファイルから読み込まれたパターンは、ディレクトリツリーのトップからの相対パスです。--exclude-per-directory で指定されたファイルから読み込まれたパターンは、パターンファイルが存在するディレクトリからの相対パスです。

一般的に、Porcelain コマンドと同じ方法で除外ルールを適用したい場合は、--exclude-standard を使用できるはずです。--exclude-standard が指定するものをエミュレートするには、--exclude-per-directory=.gitignore を指定し、次に以下を指定します。

  1. core.excludesfile 設定変数で指定されたファイル (存在する場合)、または $XDG_CONFIG_HOME/git/ignore ファイル。

  2. $GIT_DIR/info/exclude ファイル。

--exclude-from= オプションを使用します。

GIT

git[1] スイートの一部

scroll-to-top