Claude Codeに何回か続けてファイルを書き換えてもらった後、結局どこがどう変わったかを見直したい人向け
Claude に同じファイルを3回以上連続で書き換えさせた後、累計でどこが変わったか・1往復ごとに何が変わったかを切り分けて見直したい場面で叩く。git で履歴を区切って管理しているプロジェクトで使うのが前提。気に入らない変更が見つかったら /rewind に進む二段構え
Claude Code に同じファイルを何回か続けて書き換えさせていると、途中から「結局どこをどう変えたんだっけ」が頭から抜けます。1回目で h2 を直した、2回目で結論ボックスを足した、3回目で FAQ をつけた。Claude が走り終えた瞬間に「OK」と返事したものの、保存前に全体を見直したい。/diff はその「累計の変更」と「1往復ごとの変更」を切り替えながら眺める専用画面を Claude Code 内で開いてくれる打鍵です。
ターミナルで git diff を直接叩くのと違って、Claude が打った1回ごとの変更を遡れます。変更を消すボタンは付いていません。「見るだけ」の画面です。
噛み砕くと
3稿のラフを順番に重ねた絵を、紙芝居でめくり直す感覚に近いです。1枚目から3枚目までを通しで見るモード、つまり最後の保存以降にトータルで何が変わったかをまとめて見る画面と、1ターンごとに「この回でここを直した」を1コマずつ見るモードを、矢印キーで切り替えながら確認できます。
実際に変更を巻き戻す操作は別の打鍵 /rewind が担当します。/diff は「眺める専用」。気に入らなければ別の打鍵で戻す、という二段構えの前半です。
大事な前提:このコマンドは git で管理しているフォルダで叩く
「最後に保存した区切りからの累計」という見方は、そもそも git で履歴を区切って管理しているフォルダでないと意味を持ちません。git init されていない素のフォルダで /diff を叩くと、git diff モード側はほぼ空っぽです。
1ターンごとの差分(per-turn diff)の方は、Claude Code が独自に記録している履歴を使うので、git なしでも動くはず。ただし「累計を見る」と「1回ごとを見る」の切り替えで初めて価値が出る打鍵なので、git で履歴を区切れる状態でないと半分しか使えません。
「Aisola Lab の記事原稿を3ターン続けて書き換えた後」を例に、実際の手順を見る
具体的に、こういう流れを想像してみます。Aisola Lab の記事原稿 article/draft.html を Claude Code に開かせて、3回連続で書き換えを頼みました。
ステップ1: 1ターン目で結論ボックスを追加させる
「冒頭に結論ボックスを追加して」とプロンプトを送ると、Claude が article/draft.html の先頭に <div class="al-conclusion"> を差し込んで返してくれます。これでターンが1回ぶん終了。
ステップ2: 2ターン目で h2 を質問形式に書き直させる
「h2 を全部質問文に書き直して」と続けます。「○○とは」「○○の使い方」のような形に5個ぶん書き換わって、ターンが2回ぶん終了。
ステップ3: 3ターン目で FAQ を末尾に追加させる
「記事末に FAQ を3問追加して」と頼みます。Claude が <h2>FAQ</h2> の塊を末尾に書き足してターン3回ぶん終了。
ステップ4: ここで /diff を叩く
3ターンぶんの作業が終わった時点で、/diff と打って Enter。Claude Code 内に専用画面が開きます。最初は「git diff モード」になっていて、article/draft.html の「最後に保存した区切りから今までに変わった全部」がまとめて表示されます。結論ボックスの追加、h2 5個の書き換え、FAQ 3問の追加が、全部混ざって見える状態です。
ステップ5: 右矢印で「1ターンごとの差分」に切り替える
右矢印キーを押すと、画面が「per-turn diff モード」に切り替わります。3ターンぶんが個別に並んでいて、1つ目を選べば「結論ボックスを足しただけの差分」、2つ目は「h2 を書き換えただけの差分」、3つ目は「FAQ を足しただけの差分」を分けて読めます。ここで初心者がやりがちな勘違いがある。「1ターン目の差分を見ている=今のファイルがその状態」ではないです。あくまで「3ターン目までやり終えた現状」のなかから、1ターン目で動いた箇所だけを抜き出して見ているだけ。
ステップ6: 上下矢印でファイル間を移動する
1ターン目で複数ファイルを触らせていた場合、上下キーでファイルを切り替えます。今回は article/draft.html 1枚しかいじっていないので動きませんが、複数ファイルを連続で触らせた時はこっちが本番。
ステップ7: 見終わったら閉じる
見るだけの画面なので、Esc などで閉じれば元のチャットに戻ります。差分は何も変わりません。気に入らなければ別途 /rewind を叩く、で次のアクションに進みます。
つまり /diff は何をしてくれるのか
- やってくれる: 累計の変更と、1ターンごとの変更を、矢印キーで切り替えながら眺める画面を Claude Code の中で開く
- やってくれない: 変更を巻き戻す動き。これは
/rewindの役目です。それから差分の良し悪しを評価する動き。これは/reviewや/security-reviewの役目で、/diffは単に表示するだけ - 意味が薄い場面: git で履歴を区切って管理していないフォルダ。1ターンしかやっていない時は per-turn モードに切り替える価値も薄くなる
使いどころ3シナリオ
シナリオ1: 記事原稿を Claude に3ターン続けて書き換えさせた直後
Aisola Lab で記事原稿 article/draft.html を3ターン続けて書き換えさせた後、保存前に全体を見直したい時。/diff を叩いて、まず累計モードで「最終的にどこがどう変わったか」を一気に確認、次に右矢印で per-turn に切り替えて「2ターン目の h2 書き換えって、本当に5個ぶん全部にちゃんと当たってるか」を1ターン単位で点検します。「累計だと混ざってて分からない」を解消できる。
シナリオ2: 既存 OSS をいじっていて、1往復ぶんだけが変な動きに見える時
GitHub から落としてきた既存プロジェクトに対して、Claude に5ターン連続で機能追加をやらせた。動かしたらテストが落ちた。原因を切り分けたい時、/diff で per-turn モードに切り替えて1ターンずつ眺めれば、「3ターン目で意図しない箇所まで触っていた」が見つかります。累計の git diff を眺めるだけだと、5ターンぶんの変更が全部混ざっていて当たりがつけづらい。
シナリオ3: 自分の手動編集と Claude の変更を区別したい時
記事を Claude に直させた後、自分でも手で本文を少しいじってから /diff を叩く場面。git diff モードは「最後の履歴区切りから今まで」をそのまま見せるので、自分の手編集も Claude の編集も区別なく混ざります。Claude がやった分だけを切り分けて見たければ、右矢印で per-turn モードに切り替えるしかない。これを知らずに git diff モードだけで眺めて「Claude がここも変えた」と勘違いするのは、私もやらかしました。
初心者が踏みやすい落とし穴
- git で履歴を区切っていないフォルダで叩いても、git diff モードは空っぽ。
git initしていない素のフォルダだと、累計モード側はほぼ使い物になりません。per-turn 側は別経路なので動くはず。git で履歴を区切れる状態にしてから叩くのが前提 - git diff モードは「自分の手編集」と「Claude の編集」を区別してくれない。最後に履歴を区切った時点から今までを丸ごと見せるだけなので、両方が混ざります。Claude の動きだけを切り分けたいなら、右矢印で per-turn モードに切り替える
- 「履歴の区切り方」を変えると見え方も変わる。こまめに履歴を区切っている人ほど git diff モードはスッキリ、ためている人ほど膨らみます。
/diffの見え方が荒れると感じたら、まず履歴の区切り方を見直す /rewindと混ぜない。/rewindは変更を戻すアクション付き。/diffは見るだけで、戻すボタンは付いていません。「/diffで確認 → 気に入らなければ/rewindで戻す」の順序になります/reviewや/security-reviewとも別物。あちらはコードの良し悪しを論じるレビュー機能。/diffは単に差分を表示する画面なので、「/diffで見ればコードの問題点も分かる」は違います- Bash 経由でファイルを動かす操作は per-turn diff とズレる可能性がある。
rm、mv、cpのような操作のことです。Edit / Write 由来の変更が per-turn diff の主軸なので、Bash で派手にファイルを動かしたターンが混ざっていると、画面の表示と実際の状態がズレることがあります。怪しい時は累計モード側で実状態を確認するのが安全 - 1ターンしかやっていない時は per-turn モードの恩恵が薄い。1往復しか作業していない場合、累計モードと per-turn モードがほぼ同じ内容になります。価値が出るのは「3ターン以上連続で同じファイルをいじった時」
書き方
/diff
やってみるとこうなる
入力
/diff
出力例
(Claude Code の中に専用画面が開く。最初は git diff モードで、最後にgit上で履歴を区切った時点から今までの累計の差分が表示される。← / → で git diff モードと per-turn モードを切り替え、↑ / ↓ で複数ファイル間を移動。Esc などで閉じれば元のチャットに戻り、ファイルは何も変わらない)
このページに出てきた言葉
- ターン
- ユーザーが1回プロンプトを送って Claude が返事を返すまでの1往復。3回連続でファイルを書き換えさせたら3ターンぶん記録される
- git
- ファイルの変更履歴を「ここまでの状態を一区切り」と記録しながら積み上げていくしくみ。プログラムを書く現場の標準ツール
- git diff
- 「最後に履歴を区切った時点」と「今のファイル」を比べて、どこが変わったかを表示する git の打鍵
- per-turn diff
- ターンごとの差分。1往復で動いた箇所だけを抜き出した表示
- git diff モード
- <code>/diff</code> 画面の最初に開かれるモード。最後に履歴を区切った時点から今までの累計の差分を表示する
- per-turn モード
- <code>/diff</code> 画面で右矢印を押すと切り替わるモード。ターン単位で1往復ぶんの差分を1コマずつ見られる