入門 ローカル(VS Code + ターミナル) 約12分

CLI で Git の状態を読む

git status、git diff、git log --oneline の出力を読み、作業中・ステージ済み・コミット済みの3段階を把握する。

前回は VS Code のソース管理(Source Control)でコミットしました。同じ操作を、ターミナル(PowerShell)のコマンドで行います。

VS Code の画面がなくても Git の状態を読めるようになると、エラー対応やトラブルシュートで役立ちます。

この回は、前回使った Git リポジトリを VS Code とターミナルで開いている状態を前提に進めます。表示例では git-practice を使います。

この回の成功条件:

  • git status の出力を見て「作業中」「ステージ済み」「コミット済み」を区別できる
  • git log --oneline で最新コミットとそれ以前の履歴が表示される

この回で使うコマンド

状態を読む中心のコマンドは3つです。途中で cdgit addgit commit も使いますが、読み方として押さえるのはこの3つです。

コマンド役割
git statusファイルの状態を確認する
git diff変更箇所を表示する
git log --onelineコミット履歴を1行ずつ表示する

VS Code のターミナル(PowerShell)を開き、前回使った Git リポジトリのフォルダにいることを確認します。

Get-Location
C:\Users\yourname\git-practice

別のフォルダにいる場合は cd で移動します。java-practice など前回使った別のフォルダでも構いません。

cd C:\Users\yourname\git-practice

git status — ファイルの状態を確認する

何も変更していない状態で git status を実行します。

git status
On branch main
nothing to commit, working tree clean

nothing to commit, working tree clean は「変更なし、すべてコミット済み」という意味です。この状態を クリーン と呼びます。

On branch mainmain はブランチ名です。Git のバージョンや設定によっては master と表示される場合があります。どちらでもこの回の操作に影響はありません。

次に、memo.txt を開いて内容を変更し、保存します。

Git の練習メモ
CLI から変更を確認する練習

もう一度 git status を実行します。

git status
On branch 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:   memo.txt

no changes added to commit (use "git add" to add changes)

注目するのは2か所です。

  • Changes not staged for commit — 変更はあるがステージされていない
  • modified: memo.txt — 変更されたファイルの名前

この段階は「作業中」です。ファイルは変更されていますが、まだコミットの対象には入っていません。

git diff — 変更箇所を読む

具体的にどこが変わったかを見るには git diff を使います。

git diff
diff --git a/memo.txt b/memo.txt
index 1234abc..5678def 100644
--- a/memo.txt
+++ b/memo.txt
@@ -1,2 +1,2 @@
 Git の練習メモ
-コミットの練習中
+CLI から変更を確認する練習

読み方は次のとおりです。

記号意味
- で始まる行削除された行(変更前)
+ で始まる行追加された行(変更後)
記号なしの行変更されていない周辺行

VS Code の差分ビューで赤と緑に色分けされていた内容が、テキストで表示されています。

git add と git commit を CLI で実行する

変更を確認できたら、ステージとコミットを行います。

git add memo.txt

git add の後にファイル名を指定すると、そのファイルをステージに追加します。VS Code の+ボタン(変更をステージ)と同じ操作です。

ステージ後にもう一度 git status を実行します。

git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   memo.txt

表示が Changes to be committed に変わりました。これが「ステージ済み」の状態です。「次のコミットに含まれる準備ができている」という意味です。

コミットします。

git commit -m "メモをCLI練習用に更新"
[main abc1234] メモをCLI練習用に更新
 1 file changed, 1 insertion(+), 1 deletion(-)

1 file changed, 1 insertion(+), 1 deletion(-) は「1ファイルが変更され、1行追加・1行削除された」という意味です。

最後に git status で確認します。

git status
On branch main
nothing to commit, working tree clean

クリーンに戻りました。

git log —oneline — コミット履歴を確認する

これまでのコミット履歴を確認します。

git log --oneline
abc1234 (HEAD -> main) メモをCLI練習用に更新
def5678 メモに練習内容を追記
ghi9012 最初のメモを追加

1行につき1件のコミットが表示されます。コミット数やメッセージは、これまでの練習内容によって変わります。

部分意味
abc1234コミットの ID(短縮形)。コミットを一意に識別する
(HEAD -> main)今いる位置。HEAD(ヘッド)は「現在地点」を示す目印
メモをCLI練習用に〜コミットメッセージ

上が最新、下が古いコミットです。最新の行に今回のコミットメッセージがあり、その下に前回までのコミットが並んでいれば成功です。

3つの段階を整理する

Git のファイルには3つの段階があります。

作業中(Working)  →  ステージ済み(Staged)  →  コミット済み(Committed)
    git add で移動         git commit で移動
段階意味git status の表示
作業中ファイルを変更したが、まだ選んでいないChanges not staged for commit
ステージ済み次のコミットに含める準備ができたChanges to be committed
コミット済み履歴に記録されたnothing to commit, working tree clean

git status を実行すれば、今どの段階にいるかが分かります。git status は読み取りだけで、ファイルを変更しないので、迷ったときにいつでも打てます。

よくある詰まり — git diff が何も出ない

git diff を実行しても何も表示されない場合があります。

原因は git add でステージ済みにしたあとだからです。git diff は「作業中の変更」だけを表示します。ステージ済みの変更を見たい場合は次のコマンドを使います。

git diff --staged
見える範囲
git diffまだステージしていない変更(作業ツリーとステージの差分)
git diff --stagedステージ済みだがまだコミットしていない変更(ステージと最新コミットの差分)

「変更したはずなのに diff が空」というときは、ステージ済みかどうかを git status で確認してください。

次の回へ

VS Code のソース管理ビューとあわせて使うと、状態の把握がより確実になります。

次は、ローカルのコミット履歴を GitHub に送る方法を扱います。