前回は 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 に送る方法を扱います。