Git Full Workflow - ブランチ作成からPR作成まで
新規ブランチ作成、コミット分割、PR作成を一連で実行するワークフロー
使用方法
/pr-zero [説明] [--from-main]
--from-main: メインブランチ(master/main)から新規ブランチを作成
- 指定なし: 現在のブランチから新規ブランチを作成
重要なルール
- 必ず新規ブランチを作成: 既存ブランチには絶対にpushしない。必ず新規ブランチを作成してからPRを作成する
実行手順
1. 新規ブランチ作成(必須)
- 既存ブランチには絶対にpushしない
--from-mainが指定された場合: メインブランチ(master/main)に切り替えてから新規ブランチを作成
- 指定なしの場合: 現在のブランチから新規ブランチを作成(現在の変更は保持)
- ブランチ名は Conventional Branch に従う
- feature/[FeatureName]-[実装した機能名] の形式
- 例:
feature/admin-user-role-edit-invite-form
- 現在の変更をstashしてから新しいブランチを作成
2. 変更内容の確認と分析
git status で変更ファイルを確認
git diff で変更内容を確認
- 論理的な単位で複数のコミットに分割する計画を立てる
3. コミット分割と作成
- 関連する変更をグループ化して段階的にコミット
- Conventional Commits に従う
- type(scope): subject の形式(例: feat(auth): add user login validation)
- タイトルは50文字以内、本文は72文字程度で改行
- 動詞は原形を使用(add, fix, updateなど)
- コミットメッセージは小文字で始める
4. プッシュとPR作成
git push -u origin <branch_name> でプッシュ
- GitHub CLI認証状態を確認
- プライベートリポジトリの場合、認証エラー時はフォールバック処理を実行
- PRテンプレートの確認:
- 以下の順序で検索:
.github/PULL_REQUEST_TEMPLATE.md
.github/pull_request_template.md
.github/PULL_REQUEST_TEMPLATE/*.md
find . -name "*PULL_REQUEST_TEMPLATE*" -o -name "*pull_request_template*"
- テンプレートが存在する場合は、その構造をベースとして使用
- 概要セクション(## 概要/## Overview/## Summary)に変更内容を自動挿入
- 変更ファイル情報も適切なセクションに追加
gh pr create --draft でドラフトPRを作成
- 認証エラーの場合、手動PR作成URLを提供
パラメータ
- branch_name: 作成するブランチ名(feature/で始まる)
- commit_strategy: auto(自動分割)または manual(手動確認)
- --from-main: メインブランチから新規ブランチを作成するオプション
注意事項
- 既存ブランチには絶対にpushしない。必ず新規ブランチを作成すること
- 実装とテストが含まれる場合、typeはfeat/fixを優先
- PRはDraftで作成し、レビュー準備ができてからDraftを外す
- コミット分割は論理的な変更単位を意識する
- プライベートリポジトリでは認証スコープ不足時に自動フォールバック
- GitHub CLIエラー時は手動PR作成用のURLを提供する
- PRテンプレートがある場合は、既存の構造を尊重しつつ必要な情報を自動補完
- 多言語対応:英語・日本語の一般的なセクション名に対応
エラーハンドリング
GitHub CLI認証エラー
- プライベートリポジトリで "Could not resolve to a Repository" エラーが発生した場合
- 以下の手動PR作成URLを提供:
https://github.com/{owner}/{repo}/compare/{base}...{branch}
- 必要に応じて認証の再設定を案内
認証スコープ不足
- GITHUB_TOKEN環境変数使用時は、十分なスコープ(repo, read:org)が必要
- 環境変数未設定の場合は
gh auth refresh -s repo,read:org で再認証
絶対に守るべきルール
- 関係のない変更はコミットに含めないこと:今回のコミット対象以外のファイルは
git addしない
- 関係のない変更を消さないこと:コミット対象外の変更はそのままワーキングツリーに残す
- git checkout や git restore を使わないこと:ユーザーの作業内容を破棄する操作は絶対に行わない
- git reset を使わないこと:コミット履歴やステージングを勝手にリセットしない
- git stash を勝手に使わないこと:ユーザーの変更を勝手に退避しない(ブランチ作成時の明示的なstashは除く)