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がコミットメッセージを生成する際の内部処理は以下の通り。
git statusで変更ファイルを確認 — 未追跡・変更・ステージ済みファイルを把握git diffでステージ済み・未ステージの差分を取得 — 具体的な変更内容を分析git logで直近のコミット履歴を参照 — リポジトリのメッセージスタイルを学習- 変更内容の性質を判断 — 新機能・バグ修正・リファクタリング・ドキュメント更新等
- メッセージを生成 — リポジトリのスタイルに合わせたメッセージを作成
- 関連ファイルをステージ — 個別のファイルを
git add(.env等の機密ファイルは除外) - コミットを実行 — 生成したメッセージでコミット
メッセージスタイルの自動適応
直近のコミット履歴を分析して、以下のような要素を自動的に合わせる。
- 言語 — 日本語のコミットが多ければ日本語、英語が多ければ英語
- Conventional Commits —
feat:,fix:等のプレフィックスが使われていれば踏襲 - 長さ・粒度 — 1行の短いメッセージか、本文付きの詳細なメッセージか
機密ファイルの自動除外
以下のファイルはコミット時に自動的に除外される。
.env、.env.local等の環境変数ファイルcredentials.json等の認証情報ファイル- シークレットやAPIキーを含むと判断されるファイル
該当ファイルのコミットをユーザーが明示的に指示した場合は警告が表示される。
PR作成の自動化
基本的な使い方
> PRを作成して
> この変更のPRを作成してください。レビュアーは@usernameで
> mainブランチへのPRを作って
PR作成プロセス
git statusで未コミットの変更を確認 — 必要に応じてコミットを先に実行git diff main...HEADでベースブランチとの差分を取得 — PR全体の変更を把握git log main..HEADでブランチ内の全コミットを確認 — 全コミットを分析対象にする(最新コミットだけでなく)- リモートブランチの状態を確認 — pushが必要か判断
- PRタイトルと説明文を生成 — 変更内容の要約、テスト計画等を含む
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
内部動作:
git statusで変更ファイルを確認git diffでステージ済み・未ステージの差分を取得git logで直近のコミット履歴を参照してスタイルを学習- メッセージを生成し、ファイルをステージしてコミット
/commit-push-pr コマンド
コミット・push・PR作成を一括で実行するスラッシュコマンド。
> /commit-push-pr
内部動作:
- mainブランチ上であれば新しいフィーチャーブランチを自動作成
- 変更をステージしてコミット
- ブランチをoriginにpush
gh pr createでPRを作成- 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コミットを使ってよい