Claude Code × Git - コミット・PR作成の自動化リファレンス

Claude CodeはGitリポジトリの状態を自動的に読み取り、コミットメッセージの生成からPR作成まで一貫して自動化できる。本記事ではGit連携の仕組み・設定・実践的なワークフローを整理する。

Git操作の基本的な仕組み

Claude Codeはコミットやブランチ操作の前に、リポジトリの状態を自動的に収集する。

自動で収集する情報

収集コマンド取得内容用途
git status変更ファイル一覧(未追跡・変更・ステージ済み)コミット対象の判断
git diffステージ済み・未ステージの差分変更内容の分析
git diff --stagedステージ済みの変更コミット内容の把握
git log --oneline -n直近のコミット履歴メッセージスタイルの学習
git branch --show-current現在のブランチ名ブランチ戦略の判断
git remote -vリモートリポジトリ情報push先の確認

これらの情報をもとに、変更内容を分析し、適切な操作を実行する。

セッション開始時のコンテキスト

Claude Codeは起動時にgitの状態をスナップショットとして取得する。以下の情報がシステムコンテキストに含まれる。

  • 現在のブランチ名
  • メインブランチ名(PR作成時のベースブランチに使用)
  • git status の結果
  • 直近のコミット履歴

コミットメッセージの自動生成

基本的な使い方

自然言語でコミットを依頼するだけで、変更内容を分析して適切なメッセージを生成する。

> コミットして

> この変更をコミットしてください

> 変更内容をコミットして。メッセージは英語で

生成プロセス

Claude Codeがコミットメッセージを生成する際の内部処理は以下の通り。

  1. git statusで変更ファイルを確認 — 未追跡・変更・ステージ済みファイルを把握
  2. git diffでステージ済み・未ステージの差分を取得 — 具体的な変更内容を分析
  3. git logで直近のコミット履歴を参照 — リポジトリのメッセージスタイルを学習
  4. 変更内容の性質を判断 — 新機能・バグ修正・リファクタリング・ドキュメント更新等
  5. メッセージを生成 — リポジトリのスタイルに合わせたメッセージを作成
  6. 関連ファイルをステージ — 個別のファイルをgit add.env等の機密ファイルは除外)
  7. コミットを実行 — 生成したメッセージでコミット

メッセージスタイルの自動適応

直近のコミット履歴を分析して、以下のような要素を自動的に合わせる。

  • 言語 — 日本語のコミットが多ければ日本語、英語が多ければ英語
  • Conventional Commitsfeat:, fix: 等のプレフィックスが使われていれば踏襲
  • 長さ・粒度 — 1行の短いメッセージか、本文付きの詳細なメッセージか

機密ファイルの自動除外

以下のファイルはコミット時に自動的に除外される。

  • .env.env.local 等の環境変数ファイル
  • credentials.json 等の認証情報ファイル
  • シークレットやAPIキーを含むと判断されるファイル

該当ファイルのコミットをユーザーが明示的に指示した場合は警告が表示される。

PR作成の自動化

基本的な使い方

> PRを作成して

> この変更のPRを作成してください。レビュアーは@usernameで

> mainブランチへのPRを作って

PR作成プロセス

  1. git statusで未コミットの変更を確認 — 必要に応じてコミットを先に実行
  2. git diff main...HEADでベースブランチとの差分を取得 — PR全体の変更を把握
  3. git log main..HEADでブランチ内の全コミットを確認 — 全コミットを分析対象にする(最新コミットだけでなく)
  4. リモートブランチの状態を確認 — pushが必要か判断
  5. PRタイトルと説明文を生成 — 変更内容の要約、テスト計画等を含む
  6. gh pr createでPRを作成 — GitHub CLIを使用

生成されるPR説明文の構成

## Summary
- 変更内容の要約(1-3個の箇条書き)

## Test plan
- [ ] テスト計画のチェックリスト

gh CLIとの連携

Claude Codeは内部的にgh(GitHub CLI)を使用してPRを作成する。ghがインストールされ認証済みであることが前提。

# Claude Codeが内部で実行するコマンドのイメージ
gh pr create --title "PRタイトル" --body "PR説明文"

以下のオプションも自然言語で指示可能。

指示内容対応する操作
レビュアーの指定--reviewer オプション
ラベルの付与--label オプション
ドラフトPRとして作成--draft オプション
ベースブランチの指定--base オプション

PRレビューへの活用

PRの内容確認

> PR #123のレビューをして

> このPRの変更点を要約して

Claude CodeはghコマンドでPRの差分やコメントを取得し、以下の観点でレビューを実施する。

  • コードの品質・可読性
  • 潜在的なバグ
  • セキュリティ上の懸念
  • パフォーマンスへの影響
  • テストカバレッジ

レビューコメントの取得

> PR #123のコメントを確認して

内部的には以下のAPIを呼び出す。

gh api repos/{owner}/{repo}/pulls/123/comments

ブランチ操作

基本操作

> feature/new-featureブランチを作成して

> developブランチに切り替えて

> このブランチをmainにマージして

mainブランチ上からのPR作成

mainブランチ上で作業している場合、PR作成を依頼すると自動的に新しいフィーチャーブランチを作成してからPRを作成する。

# mainブランチで作業中にPR作成を依頼した場合の内部動作
git checkout -b feature/適切なブランチ名
git push -u origin feature/適切なブランチ名
gh pr create ...

コンフリクト解決の支援

マージコンフリクトの解決

> マージコンフリクトを解決して

> mainブランチをマージしてコンフリクトがあれば解決して

Claude Codeはコンフリクトマーカー(<<<<<<<, =======, >>>>>>>)を含むファイルを検出し、変更内容を分析して適切な解決策を提示する。

リベース中のコンフリクト

> mainブランチにリベースして、コンフリクトがあれば解決して

注意: Claude Codeは対話的なGitコマンド(git rebase -i 等)は実行できない。対話的でないコマンドで同等の操作を行う。

CLAUDE.mdでのGitルール設定

CLAUDE.mdにGit関連のルールを記述することで、Claude Codeのコミット・PR作成時の動作をカスタマイズできる。

コミットメッセージの言語指定

# CLAUDE.md

## Git規約
- コミットメッセージは日本語で書く
- Conventional Commitsのプレフィックスを使用する(feat:, fix:, docs:, refactor: 等)

Co-Authored-Byトレーラーの制御

Claude Codeはデフォルトでコミットメッセージにattributionを付与する。

feat: ユーザー認証機能を追加

Co-Authored-By: Claude <noreply@anthropic.com>

CLAUDE.mdで無効化できる。

# CLAUDE.md

## Git規約
- Co-Authored-Byトレーラーは付けない

コミットタイミングの制御

# CLAUDE.md

## Git規約
- Gitコミットはユーザーから依頼があった時のみ実行する
- 勝手にコミットしない

ブランチ命名規則

# CLAUDE.md

## Git規約
- ブランチ名は `feature/`, `fix/`, `docs/` のプレフィックスを使用する
- ブランチ名は英語のケバブケースで書く

設定の配置場所と優先順位

場所スコープ
~/.claude/CLAUDE.md全プロジェクト共通Co-Authored-Byの無効化
プロジェクトルート/CLAUDE.mdプロジェクト固有コミットメッセージの言語

プロジェクト固有の設定がグローバル設定より優先される。

安全性への配慮

Claude Codeは破壊的なGit操作に対して複数の安全策を備えている。

デフォルトの安全ガード

操作Claude Codeの動作
git push --force実行前にユーザーに確認を求める
git reset --hard実行前にユーザーに確認を求める
git checkout . / git restore .実行前にユーザーに確認を求める
git clean -f実行前にユーザーに確認を求める
git branch -D実行前にユーザーに確認を求める
main/masterへのforce push警告を表示し、実行を回避

コミット時の安全策

  • 既存のコミットの修正(amend)より新規コミットを優先 — pre-commitフック失敗時にamendすると前のコミットを破壊するリスクがあるため
  • pre-commitフックのスキップ(--no-verify)は行わない — ユーザーが明示的に指示した場合のみ
  • git add .git add -Aより個別ファイルのgit addを優先 — 意図しないファイルのコミットを防止
  • git config の変更は行わない — ユーザーの設定を勝手に書き換えない

Hooksによる追加の安全策

settings.json.claude/settings.jsonでhooksを設定し、危険なコマンドをブロックできる。

{
  "PreToolUse": [
    {
      "matcher": "Bash",
      "hooks": [
        {
          "type": "prompt",
          "prompt": "Command: $TOOL_INPUT.command. If command contains 'rm', 'delete', 'drop', or other destructive operations, return 'ask' to confirm with user. Otherwise 'approve'."
        }
      ]
    }
  ]
}

コミット・PRプラグイン

Claude CodeにはコミットとPR作成を簡略化するプラグインが用意されている。

/commit コマンド

スラッシュコマンド/commitで、ステージ済み・未ステージの変更を分析して適切なメッセージでコミットする。

> /commit

内部動作:

  1. git status で変更ファイルを確認
  2. git diff でステージ済み・未ステージの差分を取得
  3. git log で直近のコミット履歴を参照してスタイルを学習
  4. メッセージを生成し、ファイルをステージしてコミット

/commit-push-pr コマンド

コミット・push・PR作成を一括で実行するスラッシュコマンド。

> /commit-push-pr

内部動作:

  1. mainブランチ上であれば新しいフィーチャーブランチを自動作成
  2. 変更をステージしてコミット
  3. ブランチをoriginにpush
  4. gh pr create でPRを作成
  5. PR URLを表示

フィーチャーブランチでの開発ワークフロー

# 開発中は /commit で段階的にコミット
> /commit    # 最初のコミット
# 追加の変更
> /commit    # 2回目のコミット
# 機能完成、PRを作成
> /commit-push-pr

実践的なワークフロー例

ワークフロー1: 機能開発からPR作成まで

# 1. ブランチ作成
> feature/user-authブランチを作成して

# 2. コード実装を依頼
> ユーザー認証機能を実装して

# 3. 実装の確認・テスト
> テストを実行して

# 4. コミット
> この変更をコミットして

# 5. PR作成
> mainへのPRを作成して。レビュアーは@team-leadで

ワークフロー2: レビュー指摘の対応

# 1. PRのレビューコメントを確認
> PR #42のコメントを確認して

# 2. 指摘事項への対応
> レビューで指摘された○○を修正して

# 3. 修正をコミット・push
> 修正内容をコミットしてpushして

ワークフロー3: コンフリクト解決

# 1. mainの最新を取り込み
> mainブランチをマージして

# 2. コンフリクト発生時
> コンフリクトを解決して

# 3. 解決後のコミット
> マージコミットを作成して

ワークフロー4: リリース作業

# 1. リリースブランチ作成
> release/v1.2.0ブランチをmainから作成して

# 2. バージョン番号の更新
> package.jsonのバージョンを1.2.0に更新して

# 3. 変更ログの生成
> 前回リリースからの変更をまとめたCHANGELOGを生成して

# 4. コミット・タグ付け
> バージョン更新をコミットしてv1.2.0タグを付けて

よくある設定パターン

Conventional Commits + 日本語本文

# CLAUDE.md

## Git規約
- コミットメッセージのプレフィックスはConventional Commits(feat:, fix:, docs:等)を使用
- プレフィックス後の本文は日本語で書く
- 例: `feat: ユーザー認証機能を追加`
- Co-Authored-Byトレーラーは付けない

チーム開発向け設定

# CLAUDE.md

## Git規約
- Gitコミットはユーザーから依頼があった時のみ実行する
- コミットメッセージは英語で書く
- Conventional Commitsを使用する
- PR説明文は日本語で書く
- mainブランチへの直接pushは行わない
- force pushは絶対に行わない

個人開発向け設定

# CLAUDE.md

## Git規約
- コミットメッセージは日本語で書く
- Co-Authored-Byトレーラーは付けない
- 必要に応じてamendコミットを使ってよい

参考リンク