差分(diff)とは
この記事の結論
- 差分(diff)とは、2つのファイルやバージョンを比べて変わった部分だけを取り出したものです。Gitでは
git diffで表示します。 git diffはまだステージしていない変更、git diff --stagedはコミットされる予定の変更を出します。- 行頭の
+は追加された行、-は消された行です。AIにコードを書き換えさせたら、コミットする前に必ず差分を読みます。
さぶん/Diff(git diff)
2つのファイルやバージョンを比べたときの、変わった部分のことです。
最終更新: 2026-10-23
差分(diff)とは何か
差分とは、変更前と変更後を比べたときの「違い」のことです。英語では difference を略して diff(ディフ)と呼びます。プログラムの世界では、ファイル全体を見直す代わりに、変わった行だけを並べて確認するのが基本です。コードレビューもプルリクエストも、この差分を読む作業が中心になります。
git-diff の公式マニュアル(git-scm.com)は、git diff を「作業ツリーとインデックス、インデックスとツリー、2つのツリー、マージの結果などのあいだの変更を表示する」コマンドと説明しています。
よく使う git diff の書き方
| コマンド | 比べるもの | 使う場面 |
|---|---|---|
git diff | 作業中のファイル と ステージ済みの状態 | まだ add していない変更を見る |
git diff --staged | ステージ済みの状態 と 直前のコミット | これからコミットする内容を最終確認する(--cached と同じ) |
git diff HEAD | 作業中のファイル と 直前のコミット | add したかどうかに関係なく全部見る |
git diff main..作業ブランチ | 2つのブランチの先端 | 枝で何を変えたかをまとめて見る |
git diff --stat | (上のどれにも付けられる) | ファイルごとの変更行数だけを一覧する |
公式マニュアルにも「--staged は --cached の別名」と書かれています。どちらを使っても同じです。
差分の読み方
git diff の出力は、だいたい次の形をしています。
diff --git a/app.js b/app.js
--- a/app.js
+++ b/app.js
@@ -10,3 +10,4 @@
const total = items.length;
-console.log(total);
+if (total === 0) return;
+console.log(`件数: ${total}`);
| 記号 | 意味 |
|---|---|
--- a/… / +++ b/… | 変更前(a)と変更後(b)のファイル |
@@ -10,3 +10,4 @@ | 変更前の10行目から3行が、変更後は10行目から4行になった |
行頭の - | 消された行 |
行頭の + | 追加された行 |
| 記号なし | 前後の文脈として表示されている、変わっていない行 |
書き換えた行は「- の行が消えて + の行が足された」という2行の組で表示されます。
AIが書き換えたコードを差分で確かめる
AIコーディングエージェントは、頼んでいないファイルまで書き換えることがあります。コミットする前に、次の順で差分を読むと見落としが減ります。
git diff --statで、変わったファイルと行数を一覧する。頼んだ範囲の外のファイルがあれば、まずそこを疑う- ファイルごとに
git diff ファイル名で中身を読む - 消された行(
-)に、必要な処理やテストが含まれていないか確かめる - 問題がなければ
git addし、git diff --stagedでコミットされる内容を最終確認する
差分の読み方とコミットの分け方は、コミットのページとAI時代のGit運用でも扱っています。
関連記事
よくある質問
Q1. 差分(diff)とは何ですか?
2つのファイルやバージョンを比べたときの、変わった部分のことです。Gitでは git diff で表示し、追加された行に +、消された行に - が付きます。
Q2. git diff と git diff --staged は何が違いますか?
git diff はまだステージ(add)していない変更、git diff --staged はステージ済みで次のコミットに入る変更を表示します。--staged は --cached と同じ意味です。
Q3. git diff で何も表示されないのはなぜですか?
比べている2つに違いがないためです。変更をすでに add していると git diff には出ないので、git diff --staged か git diff HEAD で確かめてください。
Q4. 差分が長すぎて読めないときは?
git diff --stat でファイルごとの変更行数を先に見て、気になるファイルだけ git diff ファイル名 で開きます。変更が大きすぎる場合は、コミットを小さく分けるのが根本的な対策です。