セットアップ
インストール
brew install ghmacOS(Homebrew 経由)
sudo apt install ghDebian / Ubuntu
winget install GitHub.cliWindows(winget 経由)
conda install ghconda-forge 経由
認証
gh auth login # 対話形式でログイン gh auth login --with-token < token.txt gh auth status # 認証状態を確認 gh auth refresh -s repo,gist # スコープを追加
設定
gh config set editor vim gh config set pager less gh config set git_protocol ssh gh config list
リポジトリ
リポジトリコマンド
gh repo create my-app --public --clone gh repo clone owner/repo gh repo fork owner/repo --clone gh repo view owner/repo --web
リポジトリオプション
--public | --privateリポジトリの公開設定
--template owner/repoテンプレートリポジトリから作成
--clone作成後にクローン
--add-readmeREADME で初期化
gh repo list ownerオーナーのリポジトリを一覧表示
gh repo delete owner/repoリポジトリを削除(確認あり)
gh repo rename new-name現在のリポジトリの名前を変更
gh repo archive owner/repoリポジトリをアーカイブ
イシュー
イシューの管理
gh issue create --title "Bug" --body "Details here" gh issue list --state open --label bug gh issue view 42 gh issue close 42 --reason completed
イシューオプション
--assignee @me自分に割り当て
--label bug,urgentラベルを追加
--milestone v2.0マイルストーンを設定
--project "Board"プロジェクトに追加
gh issue edit 42イシューを対話形式で編集
gh issue reopen 42クローズされたイシューを再開
gh issue comment 42 -b "msg"イシューにコメントを追加
gh issue pin 42イシューをリポジトリにピン留め
プルリクエスト
PR の作成と管理
gh pr create --title "feat: add auth" --body "..." gh pr create --fill # コミットからタイトル/本文を取得 gh pr list --state open gh pr view 123 --web
レビューとマージ
gh pr checkout 123 # PR ブランチをチェックアウト gh pr diff 123 # PR の差分を表示 gh pr review 123 --approve gh pr merge 123 --squash --delete-branch
PR オプション
--draftドラフト PR として作成
--reviewer user1,user2レビュアーをリクエスト
--base mainベースブランチを設定
--merge | --squash | --rebaseマージ戦略
--autoチェックが通ったら自動マージを有効化
--delete-branchマージ後にブランチを削除
gh pr ready 123ドラフト PR をレビュー可能にする
Actions
ワークフローコマンド
gh run list # 最近の実行 gh run view 12345 # 実行の詳細 gh run view 12345 --log-failed # 失敗したステップのログ gh run watch 12345 # ライブステータス
トリガーと管理
gh workflow run deploy.yml --ref main gh workflow list gh workflow view deploy.yml gh run rerun 12345 --failed # 失敗したジョブを再実行
Actions オプション
-f key=valueworkflow_dispatch に入力を渡す
--jsonJSON として出力
-b branchブランチでフィルタ
gh run download 12345実行のアーティファクトをダウンロード
gh cache listActions キャッシュを一覧表示
gh cache delete KEYキャッシュエントリを削除
リリース
リリースの管理
gh release create v1.0.0 --generate-notes gh release create v1.0.0 ./dist/*.tar.gz gh release list gh release view v1.0.0
リリースオプション
--title "Release v1.0"リリースタイトルを設定
--notes "Changelog here"リリースノートをインラインで設定
--notes-file CHANGELOG.mdファイルからノートを取得
--generate-notesコミットから自動生成
--draftドラフトとして作成
--prereleaseプレリリースとしてマーク
--latest最新リリースとしてマーク
gh release download v1.0.0リリースアセットをダウンロード
gh release delete v1.0.0リリースを削除
gh release edit v1.0.0リリースのメタデータを編集
Gist
Gist コマンド
gh gist create file.py -d "My snippet" gh gist create file1.js file2.js # 複数ファイルの gist gh gist list gh gist view
Gist オプション
-d "description"gist の説明を設定
--public公開 gist を作成(デフォルト: シークレット)
--webブラウザで gist を開く
gh gist edit <id>gist ファイルを編集
gh gist clone <id>gist をローカルにクローン
gh gist delete <id>gist を削除
API
API 呼び出し
gh api repos/owner/repo gh api repos/owner/repo/issues --method POST \ -f title="Bug" -f body="Details" gh api graphql -f query='{ viewer { login } }'
出力のフォーマット
gh api repos/owner/repo --jq '.stargazers_count' gh api repos/owner/repo --template '{{.full_name}}' gh pr list --json number,title --jq '.[].title'
API オプション
--method GET|POST|PUT|DELETEHTTP メソッド
-f key=value文字列フィールドを設定
-F key=@fileファイルからフィールドを設定
--jq 'expression'jq 構文で JSON をフィルタ
--template 'tmpl'Go テンプレートでフォーマット
--paginateすべてのページを取得
-H 'Accept: ...'カスタムヘッダーを設定
エイリアス
エイリアスの管理
gh alias set co 'pr checkout' gh alias set bugs 'issue list --label bug' gh alias set last 'run list -L 1' gh alias list
高度なエイリアス
# シェルコマンド付きエイリアス gh alias set --shell pv 'gh pr view --json url --jq .url | pbcopy' # エイリアスを削除 gh alias delete co
エイリアスのヒント
gh alias set name 'cmd'シンプルなエイリアスを作成
--shellシェル経由で実行(パイプ対応)
gh alias list定義済みエイリアスを表示
gh alias delete nameエイリアスを削除
よくあるパターン
日常のワークフロー
gh issue list --assignee @me # 自分のオープンイシュー gh pr status # 注意が必要な PR gh pr checks 123 # PR の CI ステータス gh run list -b main -L 5 # 最近の CI 実行
検索
gh search repos --language rust --stars ">1000" gh search issues --repo owner/repo "memory leak" gh search prs --state open --review required
便利なフラグ
--json field1,field2特定フィールドを JSON で出力
--jq 'expr'JSON 出力をフィルタ
-L N結果を N 件に制限
--webブラウザで結果を開く
-R owner/repo特定のリポジトリを対象にする
GH_TOKEN=xxx環境変数で認証