第10章 GitHub CLI(gh コマンド)
GitHub CLI(gh) は、ターミナルから GitHub の操作を行えるコマンドラインツールです。
ブラウザを開かずに PR の作成やレビュー、Issue の管理ができるので、
管理者の 日常業務を大幅に効率化 できます ⌨️
10.1 基本操作
Section titled “10.1 基本操作”インストールと認証
Section titled “インストールと認証”# macOSbrew install gh
# Windowswinget install GitHub.cli
# Linux (Debian/Ubuntu)sudo apt install gh
# 認証(ブラウザで GitHub にログイン)gh auth login
# 認証状態の確認gh auth status✓ Logged in to github.com as taro-yamada ✓ Git operations protocol: ssh ✓ Token: gho_**** ✓ Token scopes: gist, read:org, repo, workflowgh repo ─ リポジトリ操作
Section titled “gh repo ─ リポジトリ操作”# リポジトリの一覧gh repo list your-org --limit 20
# リポジトリの作成gh repo create your-org/new-project --private --clone
# リポジトリの情報を表示gh repo view your-org/web-app
# ブラウザでリポジトリを開くgh repo view --web
# リポジトリをクローンgh repo clone your-org/web-app
# リポジトリをフォークgh repo fork your-org/web-appgh pr ─ Pull Request 操作
Section titled “gh pr ─ Pull Request 操作”# PR の作成gh pr create --title "feat: ログインページ追加" --body "## 概要<br>ログイン機能を実装"
# テンプレートを使って対話的に作成gh pr create
# ドラフト PR を作成gh pr create --draft
# PR の一覧gh pr listgh pr list --state open --label "bug"
# PR の詳細を表示gh pr view 123
# ブラウザで PR を開くgh pr view 123 --web
# PR をチェックアウト(ローカルでレビュー)gh pr checkout 123
# PR のレビューgh pr review 123 --approvegh pr review 123 --comment --body "LGTM!"gh pr review 123 --request-changes --body "修正をお願いします"
# PR のマージgh pr merge 123 --squash --delete-branch
# PR の差分を表示gh pr diff 123flowchart LR
A["gh pr create
PR を作成"]
B["gh pr list
PR を一覧"]
C["gh pr checkout
ローカルで確認"]
D["gh pr review
レビュー"]
E["gh pr merge
マージ"]
A --> B --> C --> D --> E
style A fill:#E8F5E9,stroke:#43A047,color:#1B5E20
style D fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1
style E fill:#F3E5F5,stroke:#8E24AA,color:#4A148C
gh issue ─ Issue 操作
Section titled “gh issue ─ Issue 操作”# Issue の作成gh issue create --title "[Bug] ログインできない" --label "bug,priority:high"
# テンプレートを使って対話的に作成gh issue create
# Issue の一覧gh issue listgh issue list --label "bug" --assignee "@me"
# Issue の詳細gh issue view 456
# Issue にコメントgh issue comment 456 --body "再現確認しました"
# Issue のクローズgh issue close 456
# Issue をアサインgh issue edit 456 --add-assignee taro-yamada
# Issue にラベルを追加gh issue edit 456 --add-label "status:in-progress"gh run ─ Actions ワークフロー操作
Section titled “gh run ─ Actions ワークフロー操作”# ワークフロー実行の一覧gh run list
# 特定ワークフローの実行一覧gh run list --workflow ci.yml
# 実行の詳細を表示gh run view 123456
# 実行のログを表示gh run view 123456 --log
# 失敗した実行のログだけ表示gh run view 123456 --log-failed
# ワークフローを手動実行(workflow_dispatch)gh workflow run deploy.yml -f environment=staging
# 失敗した実行を再実行gh run rerun 123456
# 実行が完了するまで待機gh run watch 123456gh release ─ リリース操作
Section titled “gh release ─ リリース操作”# リリースの作成gh release create v1.2.0 --title "v1.2.0" --generate-notes
# ファイルを添付してリリースgh release create v1.2.0 ./dist/app.zip ./dist/app.tar.gz
# ドラフトリリースgh release create v1.2.0 --draft --generate-notes
# リリースの一覧gh release list
# 最新リリースの情報gh release view --latestその他の便利コマンド
Section titled “その他の便利コマンド”# GitHub のステータスを確認gh status
# 通知の確認gh notification list
# Gist の作成gh gist create script.sh --public
# API を直接呼ぶgh api repos/your-org/web-app
# エイリアスの設定gh alias set prc 'pr create --draft'# 以降 gh prc で実行可能
# 拡張機能のインストールgh extension install dlvhdr/gh-dash10.2 管理業務の自動化
Section titled “10.2 管理業務の自動化”一括操作スクリプト
Section titled “一括操作スクリプト”管理者として、複数リポジトリに対する操作をスクリプト化すると便利です。
全リポジトリの Branch Protection 確認
Section titled “全リポジトリの Branch Protection 確認”#!/bin/bashORG="your-org"
echo "📋 Branch Protection の確認"echo "=========================="
gh repo list "$ORG" --limit 100 --json name -q '.[].name' | while read -r repo; do echo "" echo "🔍 $ORG/$repo" gh api "repos/$ORG/$repo/branches/main/protection" 2>/dev/null \ && echo " ✅ main ブランチは保護されています" \ || echo " ⚠️ main ブランチが保護されていません"doneマージ済みブランチの一括削除
Section titled “マージ済みブランチの一括削除”#!/bin/bashecho "🧹 マージ済みブランチの削除"
# マージ済みのリモートブランチを一覧BRANCHES=$(gh pr list --state merged --json headRefName -q '.[].headRefName' | sort -u)
for branch in $BRANCHES; do if [ "$branch" != "main" ] && [ "$branch" != "develop" ]; then echo " 🗑️ 削除: $branch" git push origin --delete "$branch" 2>/dev/null fidone
echo "✅ 完了!"全リポジトリの Dependabot Alert サマリー
Section titled “全リポジトリの Dependabot Alert サマリー”#!/bin/bashORG="your-org"
echo "🔒 Dependabot Alert サマリー"echo "==========================="
gh repo list "$ORG" --limit 100 --json name -q '.[].name' | while read -r repo; do COUNT=$(gh api "repos/$ORG/$repo/dependabot/alerts?state=open" \ -q 'length' 2>/dev/null || echo "N/A") if [ "$COUNT" != "0" ] && [ "$COUNT" != "N/A" ]; then echo " ⚠️ $repo: $COUNT 件のアラート" fidone新メンバーのオンボーディング
Section titled “新メンバーのオンボーディング”#!/bin/bashORG="your-org"USERNAME="$1"TEAM="$2"
if [ -z "$USERNAME" ] || [ -z "$TEAM" ]; then echo "Usage: ./onboard-member.sh <username> <team-slug>" exit 1fi
echo "👋 $USERNAME を $TEAM に追加中..."
# Organization に招待gh api -X PUT "orgs/$ORG/memberships/$USERNAME" \ -f role=member
# Team に追加gh api -X PUT "orgs/$ORG/teams/$TEAM/memberships/$USERNAME" \ -f role=member
echo "✅ $USERNAME を $ORG/$TEAM に追加しました!"まとめ:gh コマンド早見表
Section titled “まとめ:gh コマンド早見表”| カテゴリ | コマンド | 用途 |
|---|---|---|
| 認証 | gh auth login | ログイン |
| リポジトリ | gh repo list | 一覧表示 |
gh repo create | 作成 | |
gh repo clone | クローン | |
| PR | gh pr create | PR 作成 |
gh pr list | 一覧表示 | |
gh pr review | レビュー | |
gh pr merge | マージ | |
gh pr checkout | ローカルで確認 | |
| Issue | gh issue create | Issue 作成 |
gh issue list | 一覧表示 | |
gh issue close | クローズ | |
| Actions | gh run list | 実行一覧 |
gh run view --log | ログ表示 | |
gh workflow run | 手動実行 | |
| リリース | gh release create | リリース作成 |
| API | gh api <endpoint> | API 直接呼び出し |