GitHub CLI(gh)入門
ターミナルからGitHubを操作する
GitHub CLI(gh)を使えば、ブラウザを開かずにターミナルからPR作成・Issue管理・リポジトリ操作ができます。インストールから実践的な使い方まで解説します。
こんな人向けの記事です
- ターミナルからGitHubの操作を完結させたい人
- PR作成やIssue管理を効率化したい人
- GitHub APIをコマンドラインから利用したい人
Step 1GitHub CLIとは
GitHub CLI(gh)は、GitHub公式のコマンドラインツールです。ブラウザを開かずに、ターミナルからGitHubの主要な操作を実行できます。
| 操作 | ブラウザ | gh コマンド |
|---|---|---|
| PR作成 | GitHub → New Pull Request | gh pr create |
| Issue作成 | GitHub → New Issue | gh issue create |
| リポジトリ作成 | GitHub → New Repository | gh repo create |
| アラート確認 | GitHub → Security | gh api |
Step 2インストールと認証
インストール
ターミナル
# macOS(Homebrew)
brew install gh
# Ubuntu / Debian
sudo apt install gh
# Windows(Scoop)
scoop install gh認証(ログイン)
ターミナル
# GitHubにログイン(ブラウザ認証)
gh auth login
# 認証状態を確認
gh auth statusgh auth login を実行すると対話形式で認証が始まります。「GitHub.com」→「HTTPS」→「Login with a web browser」を選択し、表示されるワンタイムコードをブラウザに入力します。
ポイント: 認証情報はキーチェーンに保存されるため、毎回ログインする必要はありません。
Step 3リポジトリ操作
ターミナル
# リポジトリをクローン
gh repo clone ユーザー名/リポジトリ名
# リポジトリの情報を表示
gh repo view
# リポジトリをブラウザで開く
gh repo view --web
# 新しいリポジトリを作成
gh repo create my-project --public
# プライベートリポジトリを作成
gh repo create my-project --privateStep 4Pull Request操作
ターミナル
# PRを作成
gh pr create --title "機能追加" --body "詳細な説明"
# PR一覧を表示
gh pr list
# 特定のPRを表示
gh pr view 123
# PRをブラウザで開く
gh pr view 123 --web
# PRのdiffを確認
gh pr diff 123
# PRをマージ
gh pr merge 123
# PRのレビューステータスを確認
gh pr checks 123便利: gh pr createはカレントブランチから自動的にPRを作成します。--fillオプションでコミットメッセージからタイトルと本文を自動入力できます。
Step 5Issue操作
ターミナル
# Issueを作成
gh issue create --title "バグ報告" --body "詳細な説明"
# Issue一覧を表示
gh issue list
# 特定のIssueを表示
gh issue view 45
# Issueをクローズ
gh issue close 45
# ラベル付きでIssueを作成
gh issue create --title "機能要望" --label "enhancement"Step 6GitHub APIを直接呼ぶ
gh apiコマンドを使えば、GitHub REST APIを直接呼び出せます。認証ヘッダーは自動的に付与されます。
ターミナル
# Dependabotアラートを有効化
gh api repos/ユーザー名/リポジトリ名/vulnerability-alerts -X PUT
# Dependabotアラート一覧を取得
gh api repos/ユーザー名/リポジトリ名/dependabot/alerts --jq '.[] | {severity: .security_advisory.severity, package: .security_vulnerability.package.name, summary: .security_advisory.summary}'
# リポジトリの情報をJSON形式で取得
gh api repos/ユーザー名/リポジトリ名
# リポジトリの言語構成を取得
gh api repos/ユーザー名/リポジトリ名/languages注意: APIのレート制限があります。認証済みの場合は1時間あたり5,000リクエストまでです。