【Git】git status の表示の意味を解説
はじめに
Gitで作業していると、頻繁に使うのが git status
です。
git status
を実行すると、さまざまな情報が表示されます。
例えば、
-
modified
やnew file
は、それぞれどんな意味があるのか? - どの状態だと
commit
できるのか? -
git add
しないとcommit
できないのはなぜか?
など、最初のうちは理解しづらいと感じるかもしれません。
本記事では、git status
の出力結果が何を表しているのかを整理して解説します。
基本の表示パターンと意味
✅ 変更あり(ステージング済み)
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: app.py
→ git add
済みのファイルです。この状態であれば git commit
によって変更が保存されます。
⚠️ 変更あり(ステージングされていない)
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
→ ファイルの内容は変更していますが、git add
してない状態です。コミットには含まれていません。
🆕 新しく作られたファイル(未追跡)
Untracked files:
(use "git add <file>..." to include in what will be committed)
newfile.py
→ Gitがまだ管理対象として認識していないファイルです。
git add
すると、Gitが追跡できる状態になり、コミットの対象になります。
状態の図解イメージ
作業ツリー(手元の編集)
↓
git add
↓
インデックス(ステージングエリア)
↓
git commit
↓
リポジトリ(履歴)
上の図は、Gitにおけるファイルの状態の流れを表しています。
git status
は、今ファイルがどの段階(作業ツリー・ステージングエリア・リポジトリ)にあるのかを確認できるコマンドです。
よくある疑問
git add
が必要?
なぜ Gitは「何をコミットしたいのかを明示的に教えてほしい」という設計思想なので、
add
→ commit
の2ステップになっています。
untracked
とは?
Gitがまだ「このファイルを管理対象に含めるべき」と認識していない状態です。
新しく作ったファイルや、.gitignore
を外れたファイルが該当します。
git commit -a
とは?
変更済みファイルを自動で git add
してくれる便利コマンドです。
でも新規ファイル(untracked
)は無視されるので注意が必要です。
🔍 新しく作成したファイルも含めてコミットしたい場合は、git add
を使って明示的に追加する必要があります。
例:
git add newfile.py
git commit -m "新規ファイルを追加"
もしくは全ファイルをまとめてステージングする場合:
git add -A
git commit -m "すべての変更をコミット"
※ git add -A
は、「新規・変更・削除」すべてのファイルを一括でステージングします。
git add .
との違いについては、別記事などで紹介予定です。
おわりに
git status
の出力を理解できると、
Gitの状態管理についての理解が深まり、状況を正確に把握できるようになります。
「今、どのファイルが、どの状態にあるか」を教えてくれるのが git status
です。
「どこまで作業が進んでいるのか分からない」「この後どうすればいいのか迷っている」——そんなときは、まず git status
を実行する習慣をつけてみてください。
本記事が参考になれば幸いです。
Discussion