Claude Code / Cursor の Git 操作を読み解く
学習目標
このレッスンを終えると、次のことができるようになります。
- Claude Code / Cursor が画面の裏で何をしているか追える
- AI Agent への指示に「ガードレール」を入れる書き方を身につける
git diffを AI と共有して効果的にレビューさせられる
AI Agent が裏で叩いているコマンド
Claude Code に「ログイン機能を実装して、PR を作って」と頼むと、典型的にはこの順で動く:
sequenceDiagram
participant H as 人間
participant AI as Claude Code
participant Local as ローカル Git
participant GH as GitHub
H->>AI: ログイン機能を実装して PR 化
AI->>Local: git status
AI->>Local: git switch -c feature/login
AI->>Local: ファイル編集 (login.py)
AI->>Local: git add -A
AI->>Local: git diff --staged で確認
AI->>Local: git commit -m "feat: ..."
AI->>GH: git push -u origin feature/login
AI->>GH: gh pr create --title --body
AI-->>H: PR URL を提示
H->>GH: PR をブラウザで確認
H->>AI: 「main をデプロイして」(承認後)
各ステップでログが流れる。AI は普段これを表示するが、忙しい時は流し読みになる。怪しい操作 (force push / reset --hard / main 直編集) を見たら即停止する癖を付ける。
良い AI 指示のテンプレート (Git 用)
ログイン機能を実装してください。
【守ってほしい制約】
- 新しいブランチ `feature/login-redirect` を切ってから作業
- 既存テストをすべて通す
- main には絶対に直接 commit しない
- push する前に git diff を表示して確認させてください
- PR は Draft で作成し、人間レビュー後に Ready for review にする
【参考】
- 仕様: docs/specs/login.md
- 既存実装: apps/accounts/views.py:42-
完成したら git log --oneline -5 で経緯を見せてください。
要点:
| 要素 | 効果 |
|---|---|
| 新ブランチ指定 | main 汚染を防ぐ |
| テスト要件 | リグレッション防止 |
| 「直接 commit しない」 | 明示的なガードレール |
| 「diff を見せる」 | 人間が中身を確認できる |
| Draft PR | 意図せぬ通知を防ぐ |
Cursor 特有の挙動
Cursor は 「Composer」 という機能で複数ファイルを横断編集する。それと Git の関係:
flowchart LR
C[Composer で<br/>5 ファイル編集] --> A{適用?}
A -->|Accept All| W[作業ディレクトリに<br/>反映]
W --> G{commit?}
G -->|Cursor が自動| AC[git add + commit<br/>自動メッセージ]
G -->|手動| H[人間が確認して commit]
Cursor は 自動で commit してくれないことが多い。Composer 適用後は git status で「Untracked / Modified が増えていないか」を必ず確認する。
AI と diff を共有する効果的な方法
AI に「この変更レビューして」と頼む時:
悪い例
このファイル見てください
→ ファイル全文を渡しても AI は「何が変わったか」を推測しないといけない
良い例
git diff main feature/login > /tmp/review.diff
そして:
/tmp/review.diff を読んで、以下の観点でレビューしてください:
1. main にない新ロジックの妥当性
2. テストカバレッジ
3. セキュリティ (認証・認可)
4. パフォーマンス懸念
特に怪しい行は引用しながら指摘してください。
diff を渡すと AI は 「何が変わったか」だけを見て判断する。トークン消費も少ない。
commit メッセージを AI に書かせるベストプラクティス
git diff --staged を AI に渡してメッセージ生成:
以下の diff から Conventional Commits 形式の commit メッセージを生成してください。
- 1 行目: 50 文字以内のサマリ (`feat:` / `fix:` / `chore:` / `docs:` / `refactor:` のいずれか)
- 空行
- 本文: なぜ / 何を / 影響範囲 を 3-5 行
diff:
[git diff --staged の出力を貼る]
Claude Code は git commit 前に既にこれをやっていることが多い。Cursor / 単独 ChatGPT で書く時はこのテンプレを使う。
「AI が暴走したら止める」習慣
flowchart LR
AI[AI が連続実行<br/>diff 表示 → commit → push] --> S{違和感あった瞬間}
S -->|Yes| Stop[Ctrl+C で停止]
Stop --> R[git status + git log で確認]
R --> D{元に戻す?}
D -->|push 前| RST[git reset で巻き戻し]
D -->|push 後| RV[git revert で打ち消し]
AI に怠惰になっても、自分の Git の知識が最後の防衛線。
振り返り
- AI は裏で
status → switch → add → commit → push → gh pr createを順に叩いている - 指示に「ガードレール (新ブランチ・テスト通過・Draft PR)」を明示する
- レビューは
git diffだけを渡すと効率的 - 違和感を感じたら Ctrl+C で停止する習慣を持つ
次のレッスンは 60 分の実践演習です。
参考リンク
- Claude Code 公式: https://docs.claude.com/en/docs/claude-code
- Cursor 公式: https://docs.cursor.com/
- GitHub CLI: https://cli.github.com/
全 14 レッスンを、登録なしで無料で読めます。