ターミナルからプルリクエストを作成する方法

プルリクエスト(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 main
n2. ブランチをリベース:git rebase main
n3. 強制プッシュ:git push -f origin feature/your-feature-name
""]
[TOGGLE question=""マージコンフリクトを解決するにはどうすればよいですか?""
answer=""1. mainをチェックアウト:git checkout main
n2. 最新の変更を取得:git pull
n3. ブランチに切り替え:git checkout feature/your-feature-name
n4. リベース:git rebase main
n5. コンフリクトを解決して続行: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関連タスクを自動化