git status – リポジトリの状態を表示するコマンド

コマンドリファレンス

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 statusgit diffgit 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での利用に便利。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント