| この記事の要点 |
|
インデックス(ステージング領域)とは
Git では、ファイルの変更は次の 3 つの場所を順に移動します。
| 場所 | 内容 | 移動させるコマンド |
|---|---|---|
| 作業ツリー | 実際に編集しているファイル | — |
| インデックス | 次のコミットに含める内容(ステージ済み) | git add |
| リポジトリ(HEAD) | コミット済みの履歴 | git commit |
git commit は作業ツリーではなくインデックスの内容をコミットします。そのため、コミット前に「インデックスに何が登録されているか」を確認することで、入れ忘れや余計なファイルの混入を防げます。本稿は git の index に登録している状態を確認する方法を説明します。
基本: git status で確認する
以下のコマンドを実行します。
$ git status
ブランチ master
コミット予定の変更点:
(use "git restore --staged <file>..." to unstage)
new file: file3
modified: file1
コミット予定に含まれていない変更:
(use "git add <file>..." to update what will be committed)
modified: file2
追跡されていないファイル:
memo.txt
表示は 3 つのブロックに分かれます。
- コミット予定の変更点(Changes to be committed): インデックスに登録済みの変更。次の
git commitに入る - コミット予定に含まれていない変更(Changes not staged for commit): 編集したがまだ
git addしていない変更 - 追跡されていないファイル(Untracked files): Git がまだ管理していない新規ファイル
同じファイルが上下両方に出ることがあります。これは「一度 add したあとにさらに編集した」状態で、add した時点の内容だけがコミットされます。最新の内容を入れたいなら、もう一度 git add します。
Git のバージョンによっては、取り消し方法の案内が git reset HEAD <file> と表示されます(Git 2.23 より前)。どちらも「ステージを取り消す」という意味です。
短く確認する: git status -s
$ git status -s
A file3
M file1
M file2
?? memo.txt
先頭 2 文字のうち、左がインデックスの状態、右が作業ツリーの状態です。
| 表示 | 意味 |
|---|---|
| A(左) | 新規ファイルをステージ済み |
| M(左) | 変更をステージ済み |
| M(右) | 変更したがステージしていない |
| D | 削除(左ならステージ済み) |
| R | リネーム(ステージ済み) |
| ?? | 未追跡ファイル |
| MM | ステージ後にさらに変更あり |
ステージした内容の差分を見る: git diff --cached
git status はファイル名しか表示しません。どの行を変更してステージしたかを見るには次のコマンドを使います。
# インデックスと HEAD(直前のコミット)の差分 = 次にコミットされる内容
git diff --cached
git diff --staged # 同じ意味
# ファイル名だけ
git diff --cached --name-only
# ファイル名と状態(A/M/D)
git diff --cached --name-status
# 変更行数の統計
git diff --cached --stat
オプションなしの git diff は「作業ツリーとインデックスの差分」、つまりまだステージしていない変更を表示します。混同しやすいので注意してください。
インデックスの中身そのものを見る: git ls-files
インデックスには、変更分だけでなく追跡中の全ファイルが登録されています。一覧は次のコマンドで確認できます。
# インデックスに登録されている全ファイル
git ls-files
# モード・オブジェクト ID・ステージ番号付き
git ls-files -s
git ls-files -s のステージ番号は通常 0 です。マージで競合が起きているファイルは 1〜3 の番号で複数行表示されるため、競合の確認にも使えます。
間違えてステージしたときの取り消し
# ステージを取り消す(作業ツリーの変更は残る)
git restore --staged file3
# Git 2.23 より前
git reset HEAD file3
# 追跡自体をやめる(ファイルは残す)
git rm --cached secret.env
git rm --cached は追跡をやめるコマンドなので、単に「add を取り消したい」場合は git restore --staged を使います。
よくある質問
Q. 「git add .」で何が入ったか一覧で確認したい
A. git diff --cached --name-status が便利です。不要なファイルが入っていたら git restore --staged で外し、.gitignore に追加します。
Q. コミット直前に最終確認する習慣をつけたい
A. git commit -v を使うと、コミットメッセージ入力画面にステージ済みの差分が表示されます。
関連
- git diff の使い方(作業ツリー/インデックス/コミット間/ブランチ間の差分抽出)
- バージョン管理システム完全ガイド
- NetBeansでGitを導入する手順|Clone・Commit・Push・SSH鍵設定
子ページはありません
- 用語一覧
- エラー一覧
- git本体のインストール(Linux)
- Linuxサーバーへのgit導入とクライアントのセットアップ
- リモートリポジトリをローカルリポジトリとしてクローンする方法
- リモートとローカルのリポジトリを同期(pull)する方法
- 設定の確認
- gitユーザー名とemailの設定
- リモートリポジトリの作成
- ローカルリポジトリの作成
- 新規ファイル/ディレクトリをインデックスに登録
- インデックスの登録状態を確認
- ローカルリポジトリの変更をコミット
- コミット履歴の確認
- クライアントからリモートリポジトリの接続設定、確認、削除
- リポジトリへのプッシュ
- リモートリポジトリからクライアントへのSSHクローン
- リモートとローカルの差分表示
- バージョンの確認
- プロキシの設定
- ローカルをリモートリポジトリの状態に戻す
- ブランチの作成, 一覧表示, 切り替え
- ブランチのマージと削除
- リベース
- .gitignoreの書き方
- .gitignoreの設定が反映されない場合
- 特定のファイルをgitの管理から外す方法
- 参照(ORIG_HEAD, HEAD, FETCH_HEAD)
- git rm [-r --cached] の取り消し
- 一部のディレクトリ/ファイルのみをリポジトリから復元する方法
- ローカルとリモートリポジトリの有無を同期
- pushの取消し方法
- マージツールの起動方法
- Gitで「MERGING」の状態
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09