Git
English ▾ トピック ▾ 最新版 ▾ 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>…​]

説明

このコマンドは、インデックス内のファイル一覧と実際の作業ディレクトリ一覧をマージし、その2つの様々な組み合わせを表示します。

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

オプション

-c
--cached

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

-d
--deleted

ステージングされていない削除が行われたファイルを表示します。

-m
--modified

ステージングされていない変更が行われたファイルを表示します。(ステージングされていない削除も、ステージングされていない変更としてカウントされます。)

-o
--others

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

-i
--ignored

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

-s
--stage

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

--directory

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

--no-empty-directory

空のディレクトリを一覧表示しません。--directory がないと効果はありません。

-u
--unmerged

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

-k
--killed

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

--resolve-undo

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

-z

出力で \0 行終端を使用し、ファイル名を引用符で囲みません。詳細については、以下の OUTPUT を参照してください。

--deduplicate

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

-x <パターン>
--exclude=<パターン>

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

-X <ファイル>
--exclude-from=<ファイル>

<ファイル> から除外パターンを読み取ります。1行につき1つ。

--exclude-per-directory=<ファイル>

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

--exclude-standard

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

--error-unmatch

<ファイル> のいずれかがインデックスに表示されない場合、エラーとして扱います(1 を返します)。

--with-tree=<ツリーish>

--error-unmatch を使用してユーザーが提供した <ファイル> (つまり、パスパターン) 引数をパスに展開する場合、指定された <ツリーish> 以降にインデックスから削除されたパスはまだ存在すると想定します。-s または -u オプションと共にこのオプションを使用しても意味がありません。

-t

ステータスタグをファイル名と共に表示します。スクリプト作成の目的では、git-status[1] --porcelaingit-diff-files[1] --name-status がほぼ常に優れた代替手段です。よりユーザーフレンドリーな代替手段としては、git-status[1] --short または git-diff[1] --name-status を検討する必要があります。

このオプションは、ステータスタグ(ファイル名の前にスペースを空けて付加されます)という形で、各ファイル名を表示する理由を提供します。ステータスタグはすべて、次のリストからの単一文字です。

H

マージされておらず、skip-worktree でもない追跡済みファイル

S

skip-worktree である追跡済みファイル

M

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

R

ステージングされていない削除が行われた追跡済みファイル

C

ステージングされていない変更が行われた追跡済みファイル

K

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

?

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

U

resolve-undo 情報を持つファイル

-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>

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

出力

--stageが指定されていない限り、git ls-filesはファイル名だけを出力します。指定された場合は、

[<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、ステージ2のA、ステージ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)は、インデックスエントリのさまざまな側面が補間されます。以下の「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で指定されたファイルから読み取られたパターンは、そのパターンファイルが存在するディレクトリから相対的です。

一般的に、ポーセレンコマンドと同じ方法で除外ルールを適用したい場合は、--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