ファイルの状態を確認するgit statusコマンドの使い方!

git Git

gitコマンドのgit statusの使い方について書いています。
最初にgit statusについて解説して、その後に実際にコマンドを使用した際の出力を載せています。

Gitのバージョン2.32.0を使って、動作を確認しています。
git statusコマンドの公式の説明ページはこちらにあります。

git statusコマンドとは?

git statusコマンドは、現在作業しているプロジェクトのファイル状態を確認することができるコマンドです。
コマンドを実行すると、ステージエリアに載せているファイルや、新規作成したファイル、編集したファイルなどを確認することができます。

次項で、コマンドを使用して確認しています。

git statusコマンドを使う

対象プロジェクトディレクトリ配下で、下記のようにコマンドを実行するとファイルの状態を確認できます。

$ git status

ファイルがない

変更したファイルや新規作成したファイルがない場合は、下記のように表示されます。

$ git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

現在のブランチがmainブランチで、コミットするものがないというメッセージが出ています。

変更したファイルがある

ファイルをふたつ変更して、実行してみました。
そうすると、下記のような表示になっています。

$ 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)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   app/Http/Controllers/LogTesterController.php
        modified:   config/app.php

no changes added to commit (use "git add" and/or "git commit -a")

Changes not staged for commit:」の箇所の配下に変更したファイルは表示されます。
modifiedとして、変更したファイル(LogTesterController.phpとapp.php)が表示されました。

このようにブランチ名と、変更したファイル・追加したファイルが表示されます。

新規作成したファイルがある

さらに新規作成したファイルを2つ追加して、コマンドを実行してみました。
そうすると、下記のような表示になりました。

$ 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)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   app/Http/Controllers/LogTesterController.php
        modified:   config/app.php

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        app/Http/Controllers/TestAddController.php
        config/const.php

no changes added to commit (use "git add" and/or "git commit -a")

Untracked files:」配下に新規追加したファイルが表示されます。
今回追加したファイル2つ(TestAddController.phpとconst.php)が表示されました。

ステージエリアにファイルを追加する

ステージエリアに2つファイルを追加して、コマンドを実行してみました。
そうすると、下記のように表示されます。

$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   app/Http/Controllers/TestAddController.php
        modified:   config/app.php

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/Http/Controllers/LogTesterController.php

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        config/const.php

ステージエリアに追加したファイルは「Changes to be committed:」配下に追加されます。
このままコミットすると、このステージエリアに追加されたファイルだけがコミットされます。

表示される内容のまとめ

git statusで表示される内容をまとめると、下記のようになります。

状態 表示位置
ステージエリアに追加したファイル 「Changes to be committed:」配下
変更したファイル 「Changes not staged for commit:」配下
新規追加したファイル  「Untracked files:」配下

省略オプションを付けて、表示を見やすくする

-sオプションをつけることで、表示内容を少なくして確認することが可能です!

新規と変更したファイル

4つのファイルをステージエリアに上げていない状態で表示すると、下記のようになります。

$ git status -s
 M app/Http/Controllers/LogTesterController.php
 M config/app.php
?? app/Http/Controllers/TestAddController.php
?? config/const.php

先頭に右寄りの「M」がついている行が変更したファイルです。
先頭に「??」がついている行が新規作成したファイルです。

ステージエリアにファイルを追加する

上記の状態で、ステージエリアに2つのファイルを上げて、コマンドを実行しました。

$ git status -s
 M app/Http/Controllers/LogTesterController.php
M  config/app.php
A  config/const.php
?? app/Http/Controllers/TestAddController.php

そうすると、ステージエリアに追加した変更ファイルは、左寄りの「M」が先頭につきます。
ステージエリアに追加した新規ファイルは、左寄りの「A」が先頭につきました。

ここでは確認できませんが、それぞれターミナルで確認すると、コンソールでは緑色の文字になリます。(config/app.phpconfig/const.php)
緑色の文字が先頭についているファイルはコミットできる状態ということになります。

オプションを追加してブランチも表示する

下記のように-bオプションも追加すると、ブランチ名も一緒に表示されます。

$ git status -bs
## main...origin/main
 M app/Http/Controllers/LogTesterController.php
M  config/app.php
A  config/const.php
?? app/Http/Controllers/TestAddController.php

終わりに

今回はgit statusコマンドを使ったときに、表示される内容について確認してみました。
コマンドラインでファイルの状態を確認するときには、基本的に-sオプションを付けて使うようにすると、表示が見やすくなって良さそうですね。

コメント

タイトルとURLをコピーしました