はじめに
Git を使用していると、リポジトリ内のファイルの状態を把握したい場面がよくあります。一般的には git status
を使うことが多いですが、git ls-files
というコマンドを活用すると、より詳細な情報を取得できます。
本記事では、git ls-files
の使い方と、git status
との違いについて詳しく解説します。
1. git ls-files とは?
git ls-files
は、Git によって追跡されているファイルを一覧表示する コマンドです。リポジトリ内のファイルをフィルタリングしながらリストアップすることが可能です。
例えば、git status
ではファイルの状態(変更、削除、未追跡など)が表示されますが、git ls-files
は ファイル名のみを出力 するため、スクリプトやパイプ処理 (grep
や xargs
など) に活用しやすいのが特徴です。
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-files | Git が管理しているファイルをシンプルにリストアップ |
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 の運用をより効率的に進めることができます。
コメント