日本語 ▾ トピック ▾ 最新バージョン ▾ 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] --porcelaingit-diff-files[1] --name-status がほぼ常に優れた代替手段であることに注意してください。ユーザーは、よりユーザーフレンドリーな代替手段として git-status[1] --short または git-diff[1] --name-status を参照してください。

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

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" のスパースディレクトリに対して "x/" のように末尾のスラッシュ付きで表示されます。

--format=<format>

表示される結果から %(fieldname) を補間する文字列です。また、%%% に、%xXX を16進コード XX の文字に補間します。XX は16進数です。例えば、%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、ステージ2の A、ステージ3の B からのペアです。この情報は、ユーザー (またはポーセレン) がそのパスに最終的に記録されるべきものを見るために使用できます。(状態の詳細については 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 で指定されたファイルから読み取られたパターンは、パターンファイルが存在するディレクトリからの相対パスです。

一般に、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