gh コマンド(GitHub CLI)
ターミナルから GitHub を操作できる公式 CLI ツールの使い方

gh CLI とは
gh は GitHub 公式のコマンドラインツールです。
PR(プルリク)の作成・レビュー、Issue の管理、リポジトリの操作など、GitHub の主要機能をターミナルから実行できます。
ブラウザを開かずに作業を完結させられるため、開発の効率が大幅に向上します。
# インストール(macOS)
brew install gh
# インストール(Windows)
winget install GitHub.cli
# 認証(初回のみ)
gh auth loginよく使うコマンド: PR 操作
gh pr create新しい PR を作成します。タイトル・本文・レビュアー・ラベルをオプションで指定できます。
gh pr listリポジトリの PR を一覧表示します。
--state openや--assignee @meで絞り込み可能です。gh pr viewPR の詳細を表示します。
--webをつけるとブラウザで開けます。gh pr checkout他の人の PR をローカルブランチに取り込んでレビューできます。
gh pr mergePR をマージします。
--squash/--merge/--rebaseでマージ方法を指定します。
# PR を作成
gh pr create --title "機能追加" --body "説明"
# PR 一覧を表示
gh pr list
gh pr list --state open --assignee @me
# PR の詳細を確認
gh pr view 123
# PR をブラウザで開く
gh pr view 123 --web
# 他の人の PR をローカルにチェックアウト
gh pr checkout 123
# PR をマージ
gh pr merge 123 --squashよく使うコマンド: Issue 操作
gh issue create新しい Issue を作成します。リポジトリに Issue テンプレートがあれば自動で選択肢が表示されます。
gh issue listIssue を一覧表示します。
--labelや--assigneeなどで絞り込み可能です。gh issue viewIssue の詳細を表示します。コメント履歴もそのまま確認できます。
gh issue close/gh issue commentクローズやコメント追加もターミナルから直接実行できます。
# Issue を作成
gh issue create --title "バグ報告" --label bug
# Issue 一覧
gh issue list
gh issue list --label "high priority"
# Issue の詳細
gh issue view 42
# Issue をクローズ
gh issue close 42 --comment "修正完了"よく使うコマンド: リポジトリ操作
gh repo create新しいリポジトリを作成します。
--public/--privateと--cloneを組み合わせると作成と同時にローカルへ clone できます。gh repo cloneowner/repo形式で指定するだけで clone できます。URL を覚える必要がありません。gh repo forkリポジトリをフォークします。
--cloneでそのままローカルに clone 可能です。gh repo view/gh browsegh repo viewで README を表示、gh browseで現在のリポジトリをブラウザで開けます。
# リポジトリを作成
gh repo create my-project --public --clone
# リポジトリをクローン
gh repo clone owner/repo
# リポジトリをフォーク
gh repo fork owner/repo --clone
# ブラウザで開く
gh browse
gh browse --settings便利な応用テクニック
gh apiGitHub の REST / GraphQL API を直接呼び出せます。
--jqで結果の整形も可能です。gh alias setよく使うコマンドにカスタムエイリアスを定義できます。
gh prsのような短縮コマンドを自作できます。gh extensionコミュニティ製の拡張機能をインストールして
ghを拡張できます。JSON 出力(
--json)多くのコマンドで
--jsonをサポートしており、シェルスクリプトとの連携が容易です。
# API を直接呼び出し
gh api repos/owner/repo/pulls --jq ".[].title"
# エイリアスを定義
gh alias set prs "pr list --assignee @me"
gh prs # 自分の PR 一覧
# CI の状態を確認
gh run list
gh run view 12345 --log