Git ls-files の使い方と git status との違い

はじめに

Git を使用していると、リポジトリ内のファイルの状態を把握したい場面がよくあります。一般的には git status を使うことが多いですが、git ls-files というコマンドを活用すると、より詳細な情報を取得できます。

本記事では、git ls-files の使い方と、git status との違いについて詳しく解説します。


1. git ls-files とは?

git ls-files は、Git によって追跡されているファイルを一覧表示する コマンドです。リポジトリ内のファイルをフィルタリングしながらリストアップすることが可能です。

例えば、git status ではファイルの状態(変更、削除、未追跡など)が表示されますが、git ls-filesファイル名のみを出力 するため、スクリプトやパイプ処理 (grepxargs など) に活用しやすいのが特徴です。


2. git ls-files の基本的な使い方

2.1 すべての追跡されているファイルを表示

git ls-files

出力例:

README.md
src/main.js
config/settings.json

このコマンドは、Git によって管理されているファイルのみ を表示します。


3. git ls-files の便利なオプション

3.1 変更されたファイルを表示(modified)

git ls-files -m

説明:

  • 変更されたが、まだ git add されていないファイルをリストアップ。

3.2 削除されたファイルを表示(deleted)

git ls-files -d

説明:

  • Git の管理下にあるが、ワーキングディレクトリでは削除されているファイルを表示。

3.3 未追跡のファイル(untracked)を表示

git ls-files --others --exclude-standard

説明:

  • Git にまだ追加 (git add) されていないファイルをリストアップ。
  • .gitignore に記載されたファイルは除外される。

3.4 ステージング済みのファイルを表示

git diff --cached --name-only

説明:

  • git add 済みだが、まだコミットされていないファイルを表示。

3.5 ファイルの状態を詳細表示

git ls-files -v

出力例:

H README.md
M src/main.js

H: 変更なし(unchanged) M: 変更あり(modified)


4. git status との違い

コマンド説明
git status変更されたファイル、削除されたファイル、未追跡のファイルを詳細表示
git ls-filesGit が管理しているファイルをシンプルにリストアップ
git ls-files -m変更された(modified)ファイルのみ表示
git ls-files -d削除された(deleted)ファイルのみ表示
git ls-files --others未追跡(untracked)のファイルのみ表示

git status の例

git status

出力例:

On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   src/main.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	newfile.txt

git ls-files の例

git ls-files -m

出力例:

src/main.js

このように、git ls-filesシンプルなリスト形式 で出力されるため、スクリプトや grep などと組み合わせやすいのが特徴です。


5. git ls-files の活用例

5.1 変更されたファイルを grep でフィルタリング

git ls-files -m | grep "src/"
  • src/ ディレクトリ以下の変更されたファイルのみを抽出。

5.2 削除されたファイルを一括削除

git ls-files -d | xargs rm
  • 削除されたファイルを実際のディレクトリからも削除。

5.3 未追跡のファイルを一括追加

git ls-files --others --exclude-standard | xargs git add
  • .gitignore を考慮しつつ、新規ファイルを一括でステージング。

まとめ

git ls-files は、Git によって追跡されているファイルのリストを取得するための便利なコマンドです。特に git status と異なり、

  • 変更されたファイルのみ
  • 削除されたファイルのみ
  • 未追跡のファイルのみ

など、細かくフィルタリングできるため、スクリプトや CI/CD での活用にも向いています。

git status でリポジトリの状況を把握しつつ、より詳細な操作を git ls-files で行うことで、Git の運用をより効率的に進めることができます。

コメント

タイトルとURLをコピーしました