AI にコード生成を頼むと、数秒で大量のファイルが書き換わることがあります。便利な反面、何が変わったのか把握しないまま commit すると、意図しない変更や不要なファイルが履歴に残ります。
AI を使う場面で、Git の基本動作をどう活かすかを整理します。特定のツールの操作説明ではなく、どの AI を使っても共通する確認の流れです。
AI がコードを変えたとき、何が起きるか
AI にまとめて依頼すると、次のようなことが起こり得ます。
- 頼んだファイル以外も書き換わっている
- 不要な import やコメントが追加されている
.envや設定ファイルに値が埋め込まれている- 動くけれど、自分が意図した構成と違う
どれも「AI が間違っている」とは限りません。ただ、そのまま commit して先に進むと、あとから「いつこの変更が入ったのか」を追えなくなります。Git のコマンドで差分を確認してから取り込む習慣があれば、この問題はほぼ防げます。
大きい依頼の前にブランチを切る
AI に「ファイルを3つ作って」「テストも書いて」のような大きめの依頼をする前に、ブランチを作っておきます。
git switch -c ai-add-feature
ブランチを切っておけば、結果が気に入らなかったときに main に戻るだけで元の状態に復帰できます。AI の出力をすべて受け入れるか、やり直すかを、あとから安全に選べます。
ブランチの作り方と merge の流れは「ブランチで安全に試す」の回で扱いました。AI を使う場面でも同じ操作です。
作業前にきれいな状態を確認する
AI に依頼する前に git status を実行して、未コミットの変更がないことを確認します。
git status
On branch ai-add-feature
nothing to commit, working tree clean
working tree clean の状態から始めると、AI が加えた変更だけが差分として見えます。手作業の変更と AI の変更が混ざっていると、あとから「どれが AI の変更か」を区別できません。
自分の変更が残っている場合は、先に commit するか、不要なら git restore で戻してから AI に依頼します。
変更後に差分を読む
AI がコードを変更したら、commit する前に3つのコマンドで状態を確認します。
git status — 何が変わったか
git status
変更されたファイルの一覧が表示されます。頼んでいないファイルが modified や Untracked files に出ていないか確認します。
git diff — どう変わったか
git diff
ファイルごとの差分が表示されます。追加行(+)と削除行(-)を見て、自分が依頼した内容と合っているか確認します。差分が多いときは、ファイルを指定して絞り込めます。
git diff memo.txt
git log — 直前にどこまで進んでいたか
git log --oneline -5
直近5件の履歴を確認します。AI に依頼する前の commit が最新であれば、そこから先がすべて AI の変更です。
この3つはどれも「CLI で Git の状態を読む」の回で扱った操作と同じです。AI の場面だからといって特別なコマンドが要るわけではありません。
1回の依頼を1テーマに絞る
AI に「機能Aを追加して、ついでに機能Bもリファクタリングして」と頼むと、差分が大きくなりすぎて確認が難しくなります。
1回の依頼は1つのテーマに絞り、確認して commit してから次に進めると、履歴がテーマごとに分かれて読みやすくなります。
依頼1: バリデーションを追加 → 確認 → commit
依頼2: エラーメッセージを修正 → 確認 → commit
これは AI を使わない場合でも同じ原則ですが、AI は一度に大量の変更を出しやすいので、意識的に依頼を区切る方が安全です。
意図しない変更を戻す
差分を確認して「このファイルの変更はいらない」と判断したら、Git がすでに追跡しているファイルは git restore で元に戻せます。
git restore memo.txt
このコマンドは、まだ git add していない変更を破棄します。ファイルは直前の commit の状態に戻ります。
すでに git add してステージ済みの場合は、先にステージを外してから戻します。
git restore --staged memo.txt
git restore memo.txt
必要な変更だけをステージして commit し、不要な変更は git restore で消す。この選別が、AI の出力をそのまま丸ごと受け入れるのとの違いです。
AI が新しく作った不要ファイルは、git restore では戻せません。git status に Untracked files と出ているファイルは、エクスプローラーで削除するか、PowerShell なら次のように消します。
Remove-Item draft-note.txt
削除後にもう一度 git status を実行し、不要なファイル名が消えていることを確認します。
commit してはいけないもの
AI が生成したコードの中に、次のようなものが混ざっていないか確認します。
| 注意するもの | 例 |
|---|---|
| 秘密情報 | API キー、パスワード、トークン |
| 環境設定ファイル | .env、.env.local |
| AI が仮で入れた値 | your-api-key-here、TODO: replace |
秘密情報を一度 commit すると、履歴から完全に消すのは手間がかかります。git status で Untracked files に .env が見えたら、commit せずに .gitignore に追加します。
.gitignore は、Git に「このファイルは追跡しなくてよい」と伝えるための設定ファイルです。プロジェクトのルートに置き、除外したいファイル名やパターンを1行ずつ書きます。
.env
*.log
.env と *.log を書いておくと、該当ファイルは git status に表示されなくなります。
AI の出力は「採用前に読む」
- ブランチを切る
git statusできれいな状態を確認する- AI に依頼する(1回1テーマ)
git status/git diffで差分を読む- 不要な変更は
git restoreで戻す - 秘密情報や不要ファイルが混ざっていないか確認する
- 必要な変更だけ
git add→git commitする
AI が出したコードを「読まずに全部 commit」するのと、「差分を見てから必要なものだけ取り込む」のとでは、あとから問題が起きたときの対処のしやすさが大きく違います。
AI を使うこと自体が問題なのではなく、出力を確認せずに進めることが問題です。Git の基本コマンドはそのための道具として十分に使えます。
この回のまとめ
| 場面 | やること |
|---|---|
| 大きい変更の前 | git switch -c でブランチを切る |
| AI に依頼する前 | git status できれいな状態を確認する |
| AI の変更後 | git status / git diff / git log で差分を読む |
| 不要な変更がある | git restore で戻す |
| 不要な新規ファイルがある | 削除して、必要なら .gitignore に追加する |
| 秘密情報が混ざっている | commit せず .gitignore に追加する |
| 依頼の単位 | 1回1テーマに絞り、確認してから次へ |
git-basics コースはこの回で一区切りです。ここまでの記事で扱った commit、push、branch、conflict、差分確認の操作は、AI を使う場面でもそのまま役立ちます。学習を進める中で分からなくなったら、それぞれの回に戻って確認してください。