Git

GitHub CLI(gh)入門|ターミナルからGitHubを操作する

GitGitHub CLIgh

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 Requestgh pr create
Issue作成GitHub → New Issuegh issue create
リポジトリ作成GitHub → New Repositorygh repo create
アラート確認GitHub → Securitygh 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 status

gh 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 --private

Step 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リクエストまでです。