入門 ローカル(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つです。途中で cd、git add、git 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 main の main はブランチ名です。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 に送る方法を扱います。