git status とは、現在の Git リポジトリにおける作業ツリーとインデックス(ステージ)の状態を表示するためのコマンドです。
どのファイルが変更され、どのファイルがステージング済みか、どのファイルが未追跡なのかを確認するのに利用されます。コミット前に必ず実行するコマンドとして、Git入門者が最初に覚えるべきコマンドのひとつです。
構文(Syntax)
git status [オプション]
出力の読み方
git status を実行すると、以下の3つのセクションで構成された出力が表示されます。それぞれの見方と対処を理解することが Git を使いこなす第一歩です。
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.md
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: app.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
newfile.txt
Changes to be committed(コミット対象のファイル)
意味: git add でステージング済みのファイルです。次回の git commit でコミットされます。
| 表示 | 意味 | 対処 |
|---|---|---|
modified: ファイル名 | 既存ファイルの変更がステージ済み | このままコミットできる |
new file: ファイル名 | 新規ファイルがステージ済み | このままコミットできる |
deleted: ファイル名 | 削除がステージ済み | このままコミットできる |
ステージングを取り消す場合は git restore --staged <ファイル> を使います。
Changes not staged for commit(未ステージングの変更)
意味: ファイルを変更したが、まだ git add していない状態です。このままコミットしても変更は含まれません。
| 表示 | 意味 | 対処 |
|---|---|---|
modified: ファイル名 | ファイルが変更済み(未ステージ) | git add <ファイル> でステージング |
deleted: ファイル名 | ファイルが削除済み(未ステージ) | git add <ファイル> でステージング |
変更内容を先に確認したい場合は git diff <ファイル> で差分を表示してから判断できます。
Untracked files(未追跡のファイル)
意味: Git がまだ追跡していない新規ファイルです。git add を実行するまでコミット対象に含まれません。
不要なファイルの場合は .gitignore に追記して Git の管理対象外にすることも検討してください。
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 状態を詳細に表示 | git status |
-s / --short | 簡易表示(短縮形式) | git status -s |
-b | ブランチ情報を簡易表示に追加 | git status -sb |
--ignored | 無視されているファイルも表示 | git status --ignored |
実行例
通常の状態確認
git status
出力例:
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: app.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
newfile.txt
短縮形式で確認
git status -s
出力例:
M app.py
?? newfile.txt
ブランチ名を含めて簡易表示
git status -sb
出力例:
## main...origin/main
M app.py
?? newfile.txt
無視されているファイルも表示
git status --ignored
出力例:
Ignored files:
.DS_Store
node_modules/
エラー例(Git管理下でないディレクトリ)
git status
出力例:
fatal: not a git repository (or any of the parent directories): .git
git status -s の記号の見方
git status -s(short形式)では、各ファイルの状態が2文字の記号で表されます。左の文字がステージングエリアの状態、右の文字が作業ツリーの状態を示します。
| 記号 | 位置 | 意味 |
|---|---|---|
M | 左(ステージ) | ステージング済みの変更 |
M | 右(作業ツリー) | 未ステージングの変更 |
A | 左(ステージ) | 新規追加(ステージ済み) |
D | 左または右 | 削除 |
?? | 両方 | 未追跡ファイル |
$ git status -s
MM README.md # ← ステージ済み変更あり かつ 未ステージ変更もあり
M app.py # ← 未ステージングの変更のみ
A new-feature.js # ← 新規追加(ステージ済み)
?? draft.txt # ← 未追跡ファイル
git add・git diff との連携フロー
実際の開発では git status → git diff → git add の順で操作するのが基本の流れです。
# 1. 現在の状態を確認
git status
# 2. 変更内容を差分で確認(未ステージングの差分)
git diff
# 3. 確認済みのファイルをステージングに追加
git add app.py
# 4. ステージング済みの差分を最終確認
git diff --staged
# 5. コミット
git commit -m "feat: update app.py"
| ステップ | コマンド | 目的 |
|---|---|---|
| 1. 状態確認 | git status | 変更・未追跡ファイルの一覧を把握 |
| 2. 差分確認 | git diff | 何を変更したか内容を確認 |
| 3. ステージング | git add <ファイル> | コミット対象に追加 |
| 4. ステージ済み差分確認 | git diff --staged | コミット前の最終確認 |
| 5. コミット | git commit -m "..." | 変更を確定 |
ポイント: git status は作業中に何度でも実行して構いません。現在地を確認しながら進めることで、意図しない変更のコミットを防げます。
関連コマンド
git add: ファイルをステージに追加する。git diff: 変更内容を確認する。ブランチ間の差分確認方法も解説。git commit: ステージングされた変更を確定する。
備考
- 作業ツリー、インデックス、HEAD の3つの状態を把握する基本コマンド。
- チーム開発やコミット前に必ず実行される代表的な確認コマンド。
-s(short format)を組み合わせるとスクリプトやCIでの利用に便利。
参考
- Git公式ドキュメント: https://git-scm.com/docs/git-status

コメント