git diff
ファイルの変更内容を比較して差分を表示します。作業ツリー・ステージング・コミット間の3パターンで利用できます。
構文
git diff [<options>] [<commit>] [--] [<path>...] git diff は、ファイルの変更内容を比較します。「どのファイルの、どの行が、どう変わったか」を詳細に確認できます。
3つの比較パターン
パターン1: 作業ツリー vs ステージング
# まだステージングしていない変更を確認
git diff
git add する前の変更内容を確認できます。
パターン2: ステージング vs HEAD(コミット済み)
# ステージング済みの変更を確認(コミット前の最終チェック)
git diff --staged
# --cached は --staged の別名
git diff --cached
git add した後、git commit する前に「本当にこれでいいか」を確認するのに使います。
パターン3: コミット間の比較
# 2つのコミットの差分を確認
git diff abc1234 def5678
# ブランチ間の差分を確認
git diff main feature-branch
# 直前のコミットとの差分
git diff HEAD~1 HEAD
差分の読み方
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
# タイトル
-古いテキスト
+新しいテキスト
+追加された行
変わらない行
| 記号 | 意味 |
|---|---|
- | 削除された行(変更前) |
+ | 追加された行(変更後) |
| 空白 | 変更なし(文脈表示) |
よく使うオプション
# 変更の統計だけを表示(詳細を省略)
git diff --stat
# 変更されたファイル名だけを確認
git diff --name-only
# 空白の変更を無視する
git diff -w
# 単語単位で差分を表示
git diff --word-diff
特定ファイルの差分を確認
# 1ファイルだけの差分を表示
git diff README.md
# ステージング済みの特定ファイルを確認
git diff --staged src/index.js
git status との使い分け
| コマンド | わかること |
|---|---|
git status | どのファイルが変更されたか(ファイル名) |
git diff | 何がどう変わったか(行単位の詳細) |
大まかな変更ファイルを確認したいときは git status、詳細な変更内容を見たいときは git diff を使います。