/commit の実行フェーズ(ops-runner が担当)で参照する実行手順・push・PR・マージの詳細手順と,問題発生時の対処手順.
ブランチ命名・コミットメッセージ等の規約は .claude/rules/git-conventions.md に従う.
/commit の司令塔(メインループ)から委譲された ops-runner が実行する手順.ユーザーへの確認は不要,全ステップを一気に実行する(停止条件に該当した場合を除く).
git branch --show-current で現在のブランチを確認git status で変更ファイルの一覧を確認git diff および git diff --cached で変更内容を確認main ブランチにいる場合は自動でブランチを作成する:
git checkout -b {ブランチ名} で作業ブランチを作成するdocs 更新の要否の判断はしない(司令塔が行う).以下の事実を最終報告の「事実報告」に含める:
.claude/commit-context.md の有無と,あれば記録されたフラグ(docs_updated / claude_md_updated / progress_md_updated)docs/ 配下・CLAUDE.md・docs/PROGRESS.md のそれぞれを含むか,およびそれ以外の変更ファイル一覧上位から渡された意図サマリ・引数と変更内容をもとに,git-conventions の「コミットメッセージ」書式で生成する.上位がメッセージ全文を確定して渡した場合はそのまま使う.意図サマリと実際の diff に食い違いがある場合は,diff を正としつつ食い違いを「警告」に含める.
git add で関連ファイルをステージングする(CLAUDE.md / docs/PROGRESS.md の変更がある場合はそれも含める..env やクレデンシャルファイルはステージングしない)git commit -m "{コミットメッセージ}" でコミットする.claude/commit-context.md が存在する場合は削除する上位から渡された引数に以下のキーワードが含まれる場合のみ実行する(いずれも無ければスキップ).
| キーワード | 実行する操作 |
|---|---|
push | プッシュ・PR 作成 |
merge | プッシュ・PR 作成・マージ・プル(push を含む全操作) |
手順は後述「開発フロー」に従う(push → PR 作成(既存 PR があれば URL の確認のみ)→ merge の場合はマージの実行 → ローカル環境のクリーンアップ).コンフリクト等の問題が起きた場合は「トラブルシューティング」を参照し,意味的な衝突の解消や force push を伴う操作は停止して報告する.
作業ブランチをリモートへ送り,main にマージされるまでの手順.
作業ブランチをリモートリポジトリへ送信する.
git push origin feature/new-function
GitHub CLI (gh) を使用して PR を作成する.
gh pr create --title "[add] 新機能を実装" --body "概要"
--title はコミットメッセージと同じ書式([タグ] 内容)とする.--reviewer でレビュワーを指定する.main に残る).
main へ移ってからマージする.PR ブランチ上で --delete-branch を実行すると gh が暗黙に main への切替と pull を行い,ブランチ削除より前に pull が走る(post-merge hook 等の後処理が削除前の状態を見てしまう).手順を明示的にして順序を固定する.git checkout main gh pr merge feature/new-function --merge --delete-branch # リモート・ローカルのブランチも削除される
マージ完了後はローカルの main を最新化する(ブランチ削除の後に pull する順序を守る).
git pull origin main git branch -d feature/new-function # gh が削除済みなら不要(残っていた場合のみ)
他メンバーの変更と競合した場合の対処手順.
main の取り込み
作業ブランチに main の最新内容をリベースして競合箇所を洗い出す.merge ではなく rebase を使うことで,履歴が線形に保たれレビューしやすくなる.
git checkout main git pull origin main git checkout feature/new-function git rebase main
競合の解消
エディタ上で <<<<<<<,=======,>>>>>>> で囲まれた箇所を手動で修正する.修正後,以下のコマンドでリベースを続行する.
git add [修正したファイル] git rebase --continue
AI 補助によるコンフリクト解消
Claude Code にコンフリクトを解消させる場合は,衝突の種類に応じて進め方を変える.
解消後は衝突の種類によらず,必ずテスト(/implement の Tester)と作者による Phase 1 動作確認を行う.人間の判断は「どの意図が正しいか」を,テストは「実際に動くか」を担保するものであり,どちらか一方を省略してはならない.
プッシュ
全ての競合が解消されたらプッシュする.リベース後は履歴が書き換わるため通常の push は拒否されるが,他メンバーが push 済みの履歴を誤って上書きしないよう,-f ではなく --force-with-lease を用いる(自分が最後に fetch した時点のリモート状態と一致する場合のみ上書きし,ズレていれば拒否される).
git push --force-with-lease origin feature/new-function
gh pr merge 等が実行される前に遮断され,gh の出力が返ってこない場合は,auto mode のセキュリティ分類器によるブロックである.リポジトリ側の制約(ブランチ保護・必須レビュー・権限不足)とは原因が異なるため,混同して報告しない.
gh がエラーメッセージを返す.分類器ブロックではコマンド自体が実行されない..claude/settings.json の permissions.allow に Bash(gh pr merge:*) があるか確認する.無ければユーザーが手で追加し,セッションを再起動する(permissions の変更は再起動後に反映される.Claude 自身が settings.json の permissions を編集することは分類器にブロックされるため,自分では追加できない).
Bash(gh *) のような広い allow ルールは分類器に回されるため効かない.Bash(gh pr merge:*) のように操作を特定した狭いルールにする必要がある.main への直接 push 等)や,設定を緩めての強行.ブロックされた事実と対処法をそのままユーザーに伝えて停止する.まだプッシュしていない場合
コミットを取り消し,変更内容を保持したまま新しいブランチへ移動する.
git reset --soft HEAD^ git checkout -b feature/new-function git commit -m "[add] ..."
すでにプッシュしてしまった場合
main への force push はチーム全員の履歴を壊す危険があるため,自分では対処しない.直ちにチームメンバーに報告し,全員で対応方針を決める.