🔖

【Git】git status の表示の意味を解説

に公開

はじめに

Gitで作業していると、頻繁に使うのが git statusです。

git status を実行すると、さまざまな情報が表示されます。

例えば、

  • modifiednew 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は「何をコミットしたいのかを明示的に教えてほしい」という設計思想なので、
addcommit の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