AIの業務活用

gitでAIの変更内容を確認する:作業前コミットからdiffとコミットまで

Claude Codeがファイルを修正する前にgitで基準点を残し、作業後は`git status`と`git diff`で実際の変更内容を読む流れを学びます。AIにdiffの説明を頼むことはできますが、説明だけを信じず、人がdiffと実行結果を確認してから自分でステージングとコミットを行う手順を使います。

目次を表示

対象読者Claude Codeが作った変更を戻せる基準点とレビュー記録を残すために、gitの最小限の作業フローを学びたい初心者

準備するもの
  • vibe-expensesフォルダにexpenses.csv、summarize.py、CLAUDE.mdが用意されていること
  • Gitがインストールされていて、ターミナルでgitコマンドを実行できること
  • 前の記事で`--by-category`機能の期待出力と検証方法を理解していること

01AIのチェックポイントとgitを同じものと考えない

Claude Codeはプロンプトごとに自動チェックポイントを作成し、`/rewind`でコードや会話を戻す選択肢を提供しますが、公式ドキュメントでもこれはgitのようなバージョン管理を置き換えるものではないと説明されています。特にBashコマンドのrm、mv、cpなどで変更されたファイルや、Claude Codeの外で直接変更したファイルは、チェックポイントで追跡・復元できない場合があります。そのため重要な作業では、AI機能とは別にgitの基準点を残す方がよいでしょう。

手段この記事での役割注意点
Claude Codeチェックポイントセッション中の巻き戻し補助すべての外部変更を追跡するバージョン管理ではない
git commit作業前後の状態を明示的に記録コミットするファイルを人が確認する必要がある
git diff実際の行単位の変更を確認AIの説明よりdiff原文を基準にする
実行結果機能が要件どおり動くか確認diffが小さくても結果検証は別に必要

この記事の目的はgitのすべての機能を学ぶことではありません。「作業前の状態をコミットし、AIが変更した後にdiffを読み、実行結果を確認してからコミットする」という最小限の流れだけを使います。

02AIに任せる前に作業前の基準点をコミットする

すでにgitリポジトリなら現在の状態を先に確認し、まだリポジトリでなければ練習フォルダで初期化できます。次の例は、前の記事までのファイルを作業前の基準点として記録する流れです。実際のプロジェクトでは無条件ですべてのファイルを追加せず、`git status`で対象を確認します。

プロンプト
cd vibe-expenses
git init
git status --short
git add expenses.csv summarize.py CLAUDE.md
git diff --cached
git commit -m "Baseline before category summary"

このコンピュータでgitを使って初めてコミットする場合、コミット作成者情報がなくてgit commitが止まることがあります。その場合は、git config --global user.name "名前"とgit config --global user.email "メールアドレス"を一度設定してから再度コミットします。公開リポジトリに上げる予定なら、公開しても問題ないメールアドレスを使います。

`git diff --cached`はコミットに入るステージ済みの変更を表示します。最初のコミットでは出力が長くなることがありますが、少なくとも意図しないファイルが混ざっていないか確認します。実務リポジトリで`.env`、キーファイル、個人データのような機密ファイルを不用意に追加してはいけません。このシリーズは最初から仮想データだけを使います。

03一度に一つの機能だけを任せ、変更ファイル数を制限する

今回の作業はsummarize.pyに`--by-category`オプションを追加する一つの機能です。Claude Codeに依頼するときも、別のリファクタリングやファイル整理を一緒に行わないよう範囲を絞ります。変更が小さいほどdiffを読みやすく、問題が起きたときに原因を見つけやすくなります。

プロンプト
summarize.pyだけに`--by-category`オプションを追加してください。
通常実行の結果は変えず、expenses.csvとCLAUDE.mdは修正しないでください。
外部パッケージを追加しないでください。
修正後、どのファイルを変更したか教えてください。

Claude Codeの公式ドキュメントでは、自然言語で'what files have I changed?'のように変更ファイルを尋ねられると案内されています。ただしAIの回答だけで変更範囲を確定せず、すぐ次の段階でgitが示す実際の状態を確認します。

04git statusとgit diffを人が先に読む

作業が終わったと仮定したら、まず`git status --short`で変更ファイルを確認します。要件どおりならsummarize.pyだけが修正されているはずです。次に`git diff -- summarize.py`で、まだコミットしていない実際の変更内容を読みます。ファイル名だけ確認してすぐコミットすると、AIが一行を誤って変えていても見落とす可能性があります。

プロンプト
git status --short
git diff -- summarize.py
  • expenses.csvやCLAUDE.mdが予期せず変更されていないか確認する。
  • 既存の月別出力ロジックが削除されたり意味が変わったりしていないか確認する。
  • `--by-category`条件があるときだけ追加出力が実行されるか確認する。
  • 依頼していないパッケージのimportやファイル書き込みコードが追加されていないか確認する。
  • diffに理解できない変更があれば、コミット前に理由をもう一度尋ねる。

ここでgit diffは「実際に何が変わったか」を示す資料であり、AIの説明はその資料を理解するための補助手段です。両者が異なる場合は、diff原文と実際のファイルを基準に判断します。

05Claudeにdiffの説明を頼むが、説明と変更を分ける

diffに慣れていなければ、Claude Codeに現在の変更を説明してもらうことができます。このとき新しい修正まで一度に頼まず、まず説明だけを求めれば、レビューと追加変更が混ざりません。

プロンプト
現在のgit diffを読んで、summarize.pyで変わった内容を説明してください。
1) 既存動作を維持している部分
2) `--by-category`のために追加された部分
3) 元のCSVを修正するコードがあるか
4) 新しい外部パッケージを使うか
この四項目だけで整理してください。今はファイルをさらに修正しないでください。
編集例
[編集例 · 実際の応答ではありません]
- 既存の月別合計計算は維持され、通常実行では同じ形式で出力されます。
- category別の累積データ構造と`--by-category`条件が追加されています。
- 入力CSVへ書き込むコードは追加されていません。
- Python標準ライブラリだけを使い、新しい外部パッケージはありません。

上の内容は、実際のClaude Codeが読んだdiffの結果ではなく、説明形式を示す編集例です。実際の作業では、それぞれの説明が`git diff`の行と一致するかを直接照合します。

06実行結果まで確認してからステージングする

diffが意図どおりに見えても、動作確認は別です。前の記事で検証した二つのコマンドを再度実行し、通常出力とオプション出力を確認します。この記事はgitの流れに集中するためPythonコードは再掲載せず、すでに検証済みのsummarize.pyを使う前提で実行コマンドだけを示します。

プロンプト
python summarize.py expenses.csv
python summarize.py expenses.csv --by-category

通常実行は2026-09 = 26600, 2026-10 = 9800である必要があります。オプション実行では2026-09のfood 20500, transport 2900, supplies 3200を確認できる必要があります。値が違えばコミットせず、コードまたは入力ファイルを再確認します。

07最後にstaged diffを見て、説明的なメッセージでコミットする

レビューと実行確認が終わったら、変更したファイルだけをステージングします。続いて`git diff --cached`で実際にコミットへ入る内容をもう一度確認してからコミットします。Claude Codeに自然言語でコミットを依頼することもできますが、初心者はどのファイルが入るのかを自分で確認してからコミットする流れを先に身につける方がよいでしょう。

プロンプト
git add summarize.py
git diff --cached -- summarize.py
git commit -m "Add category summary option"
git status --short

公式ドキュメントでは、'commit my changes with a descriptive message'のように自然言語でコミットを依頼できると案内されています。ただしこの機能を使う場合でも、コミット直前にdiffと対象ファイルを確認する原則は同じです。コミット後に`git status --short`が空なら、追跡中の変更が残っていない状態です。

時点コマンドまたは行動確認目的
作業前git commit戻れる基準点を作る
作業後git status --short変更ファイルの範囲を確認
レビューgit diff実際の行単位の変更を読む
機能確認Pythonの二つの実行コマンド期待出力が維持されているか確認
コミット前git diff --cachedコミット対象を最終確認
完了git commitレビュー済みの変更を新しい基準点として記録

自分で確認する項目

Claude Code公式ドキュメント(2026-09-22確認)のgit・チェックポイント説明を基準に作成 · Claude Codeとgitコマンドを実際に実行したとは主張しない

  • 作業前の基準点コミット → 作業後のstatus/diff → 実行確認 → staged diff → コミットの順序が一貫しているか確認
  • `git status --short`、`git diff -- summarize.py`、`git diff --cached -- summarize.py`、`git commit -m`の構文を確認
  • Claude Codeのチェックポイントがgitを置き換えないという公式ドキュメントの制限を反映しているか確認
  • BashコマンドおよびClaude Code外の変更にはチェックポイント復元の制限があり得ることを明記しているか確認
  • Claudeにdiffの説明を依頼する例が実際の応答ではないと表示しているか確認
  • 本文にPythonコードブロックがないため、この記事自体には別途Pythonコード実行検証の対象がないことを確認
検証範囲の限界

この記事では実際にgitリポジトリを作成したり、Claude Codeにコミットを任せたりした実行記録を示していません。コマンドは学習用の連続例であり、実際のプロジェクトでは既存のブランチ方針、.gitignore、機密情報の有無を別途確認する必要があります。