差分(diff)とは

この記事の結論

  • 差分(diff)とは、2つのファイルやバージョンを比べて変わった部分だけを取り出したものです。Gitでは git diff で表示します。
  • git diff はまだステージしていない変更、git diff --staged はコミットされる予定の変更を出します。
  • 行頭の + は追加された行、- は消された行です。AIにコードを書き換えさせたら、コミットする前に必ず差分を読みます。

さぶん/Diff(git diff)

2つのファイルやバージョンを比べたときの、変わった部分のことです。

最終更新: 2026-10-23

01

差分(diff)とは何か

差分とは、変更前と変更後を比べたときの「違い」のことです。英語では difference を略して diff(ディフ)と呼びます。プログラムの世界では、ファイル全体を見直す代わりに、変わった行だけを並べて確認するのが基本です。コードレビューもプルリクエストも、この差分を読む作業が中心になります。

git-diff の公式マニュアル(git-scm.com)は、git diff を「作業ツリーとインデックス、インデックスとツリー、2つのツリー、マージの結果などのあいだの変更を表示する」コマンドと説明しています。

02

よく使う git diff の書き方

何と何を比べるか
コマンド比べるもの使う場面
git diff作業中のファイル と ステージ済みの状態まだ add していない変更を見る
git diff --stagedステージ済みの状態 と 直前のコミットこれからコミットする内容を最終確認する(--cached と同じ)
git diff HEAD作業中のファイル と 直前のコミットadd したかどうかに関係なく全部見る
git diff main..作業ブランチ2つのブランチの先端枝で何を変えたかをまとめて見る
git diff --stat(上のどれにも付けられる)ファイルごとの変更行数だけを一覧する

公式マニュアルにも「--staged は --cached の別名」と書かれています。どちらを使っても同じです。

03

差分の読み方

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行の組で表示されます。

04

AIが書き換えたコードを差分で確かめる

AIコーディングエージェントは、頼んでいないファイルまで書き換えることがあります。コミットする前に、次の順で差分を読むと見落としが減ります。

  1. git diff --stat で、変わったファイルと行数を一覧する。頼んだ範囲の外のファイルがあれば、まずそこを疑う
  2. ファイルごとに git diff ファイル名 で中身を読む
  3. 消された行(-)に、必要な処理やテストが含まれていないか確かめる
  4. 問題がなければ git add し、git diff --staged でコミットされる内容を最終確認する

差分の読み方とコミットの分け方は、コミットのページとAI時代のGit運用でも扱っています。

05

関連記事

06

よくある質問

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 ファイル名 で開きます。変更が大きすぎる場合は、コミットを小さく分けるのが根本的な対策です。