ターミナルからプルリクエストを作成する方法
  プルリクエスト(PR)は、GitHub上での共同開発の基本であり、変更がマージされる前にコードレビューとディスカッションを可能にします。このガイドでは、主にGitHub CLI(gh)を使用して、ターミナルからPRを効率的に作成および管理する方法を説明します。
重要なポイント
- GitHub CLIを使用したPR管理の方法を学ぶ
 - ターミナルベースのPRワークフローをマスターする
 - PR作成のベストプラクティスに従う
 - 一般的なトラブルシューティングシナリオに対処する
 - 高度なPR機能を実装する
 
前提条件
始める前に、以下を確認してください:
- Gitがインストールされ、設定されていること(Gitのダウンロード)
 - GitHub CLI(
gh)がインストールされていること(GitHub CLIドキュメント) - GitHubアカウントを持っていること(サインアップ)
 - リポジトリへのアクセスと必要な権限があること
 - Gitコマンドの基本的な理解があること
 
GitHub CLIのセットアップ
インストール
お使いのオペレーティングシステムを選択してください:
macOS
# Homebrewを使用
brew install gh
# MacPortsを使用
sudo port install gh
Linux
# Debian/Ubuntu
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo ""deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main"" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update
sudo apt install gh
# Fedora
sudo dnf install gh
# Arch Linux
sudo pacman -S github-cli
Windows
# Scoopを使用
scoop install gh
# Wingetを使用
winget install --id GitHub.cli
認証
インストール後、GitHubで認証します:
gh auth login
対話式のプロンプトに従って認証を完了します。HTTPSまたはSSHプロトコルを選択できます。
プルリクエストの作成
1. ブランチの準備
# ローカルのmainブランチを更新
git checkout main
git pull origin main
# 新しい機能ブランチを作成して切り替え
git checkout -b feature/your-feature-name
2. 変更を加えてコミット
# すべての変更をステージング
git add .
# 説明的なメッセージでコミットを作成
git commit -m ""feat: implement new feature
- 新機能を追加
- ドキュメントを更新
- 関連する問題を修正""
3. 変更をプッシュ
# ブランチをGitHubにプッシュ
git push -u origin feature/your-feature-name
4. プルリクエストの作成
GitHub CLIを使用(推奨)
基本的なPR作成
gh pr create --title ""機能:新機能の実装"" --body ""変更の説明""
高度なPR作成
gh pr create 
  --title ""機能:新機能の実装"" 
  --body ""## 変更点
- 新機能を実装
- テストを更新
- ドキュメントを追加
## 関連する課題
Closes #123"" 
  --base main 
  --head feature/your-feature-name 
  --reviewer username1,username2 
  --label ""enhancement,documentation"" 
  --milestone ""v1.0.0"" 
  --project ""プロジェクトボード""
5. PRの管理
# ブラウザでPRを表示
gh pr view --web
# PRのステータスを確認
gh pr status
# すべてのPRをリスト表示
gh pr list
# 既存のPRにレビュアーを追加
gh pr edit --add-reviewer username1,username2
# ラベルを追加
gh pr edit --add-label ""priority,bug""
ベストプラクティス
- ブランチの命名
- 説明的な接頭辞を使用:
feature/、fix/、docs/、refactor/ - 該当する場合は課題番号を含める:
feature/123-user-authentication 
 - 説明的な接頭辞を使用:
 - コミットメッセージ
- 従来のコミット規則に従う(規約)
 - スコープと説明を含める
 - 課題を参照:「fixes #123」
 
 - PR説明
- 利用可能な場合はテンプレートを使用
 - コンテキストと理由を含める
 - 関連する課題と依存関係をリスト
 - UI変更のスクリーンショットを追加
 
 - コードレビュー
- フィードバックに迅速に対応
 - 必要に応じてPR説明を更新
 - コンフリクトを迅速に解決
 
 
トラブルシューティング
一般的な問題と解決策
- 
認証失敗
gh auth login --web - 
プッシュが拒否された
git pull origin main git rebase main git push -f origin feature/your-feature-name - 
マージコンフリクト
git checkout main git pull git checkout feature/your-feature-name git rebase main # コンフリクトを解決して続行 git rebase --continue 
高度な機能
ドラフトPR
gh pr create --draft
PRテンプレート
リポジトリに.github/pull_request_template.mdを作成して、標準化されたPR説明を使用します。
PR作成の自動化
一般的なPRパターンのシェルエイリアスやスクリプトを作成できます:
# .bashrcまたは.zshrcに追加
alias pr-create='gh pr create --template ""template.md"" --label ""needs-review""'
最新機能を利用するために、GitHub CLIを最新の状態に保つことを忘れないでください:
# GitHub CLIを更新
gh update
よくある質問
[TOGGLE question=""認証が失敗した場合はどうすればよいですか?""
answer=""ターミナルインターフェースの代わりにブラウザを通して認証するには gh auth login --web を使用してください。""]
[TOGGLE question=""プッシュが拒否された場合はどう対処しますか?""
answer=""1. 最新の変更を取得:git pull origin mainn2. ブランチをリベース:git rebase mainn3. 強制プッシュ:git push -f origin feature/your-feature-name""]
[TOGGLE question=""マージコンフリクトを解決するにはどうすればよいですか?""
answer=""1. mainをチェックアウト:git checkout mainn2. 最新の変更を取得:git pulln3. ブランチに切り替え:git checkout feature/your-feature-namen4. リベース:git rebase mainn5. コンフリクトを解決して続行:git rebase --continue""]
[TOGGLE question=""ドラフトPRを作成できますか?""
answer=""はい、--draftフラグを使用します:gh pr create --draft""]
[TOGGLE question=""PRテンプレートはどのように使用しますか?""
answer=""標準化されたPR説明のために、リポジトリに.github/pull_request_template.mdファイルを作成します。""]
結論
ターミナルベースのアプローチでプルリクエストを作成・管理するスキルを習得することで、開発ワークフローを大幅に向上させることができます。GitHub CLI(gh)は、作成からマージまでのPRプロセスを効率化する強力なツールセットを提供します。このガイドで概説したベストプラクティスに従い、GitHub CLIの機能を活用することで、以下のことが可能になります:
- ターミナルとブラウザ間のコンテキスト切り替えを避けて時間を節約
 - テンプレートと規則を通じて一貫したPRの品質を維持
 - 一般的なPRの課題に効率的に対処
 - 繰り返しのPR関連タスクを自動化