リファレンス
インタラクティブポリシー
gh は非 TTY コンテキストでは既に適切に動作します。ページャーをスキップし、ANSI カラーを除去し、プロンプト表示の代わりに役立つメッセージと共にエラーを早めに返します(例:must provide --title and --body when not running interactively)。GH_PAGER を防御的に設定したり、--no-pager(そのようなフラグは存在しません)を渡す必要はありません。
JSON の解析
gh の人間向け出力はカラム形式です。構造化データが必要な場合:
--json field1,field2,...を追加して構造化出力を得ます。--jsonを フィールドリストなし で実行すると、利用可能な全フィールドが表示されるので、必要なものを選択します。- 別途
jqにパイプせずにフィルタリングするには--jq '<expr>'を使用します。 - 整形されたテキスト出力が必要な場合は、
--jsonと共に--template '<go-template>'を使用します。一部のコマンド(例:gh pr create -T、gh issue create -T)では--template/-Tがボディテンプレートフラグと衝突することに注意。常に--helpで確認してください。
ページネーションと暗黙の切り捨て
リストコマンドは結果を制限します。
gh issue list、gh pr list、gh search ...:-L N(--limit N)を渡します。デフォルトは通常 30 です。gh issue list/gh pr listは--json経由でtotalCountのような集計値を公開しません。真の合計が必要な場合はgh api graphqlを使用してtotalCountをクエリしてください。それ以外の場合は、現在の呼び出しの上限として-Lを扱います。- 生の API コールには
gh api --paginate <path>を使用します。--jqと(オプションで)--slurpを組み合わせて 1 つの配列にまとめます。
リポジトリの指定
gh はカレントワーキングディレクトリの git リモートからリポジトリを推測します。
--repo OWNER/REPO(-R)を渡すと、解決された CWD リポジトリを上書きします。
検索とリスト
gh search issues|prs|code|repos|commits|usersは GitHub の検索インデックスを使用し、完全な検索構文(is:open、author:、label:、repo:owner/name、in:title...)を受け入れます。クエリ全体を 1 つの引用符で囲んだ文字列として渡します。gh search issues "is:open author:foo repo:cli/cli"のように。リポジトリをまたぐ場合や作成者/ラベルでフィルタリングする場合に推奨します。gh issue list --search "..."とgh pr list --search "..."も同じ構文を受け入れますが、1 つのリポジトリにスコープされます。
--json で公開されないものには gh api にフォールバック
型付きコマンドで公開されない便利なデータが存在することがあります。例:
- PR のレビュースレッドコメント:
gh api repos/{owner}/{repo}/pulls/{n}/comments(gh pr viewの--commentsフラグは Issue レベルのコメントのみを表示します)。 - 任意の GraphQL:
gh api graphql -f query='...' -F var=value。 - REST ショートカット:
gh api repos/{owner}/{repo}/...-{owner}/{repo}プレースホルダーはリポジトリ内で実行するとき検出されたリモートから自動的に埋められます。決定論的な動作が必要な場合はリテラルで渡します。
認証
gh auth statusはアクティブなホスト、ユーザー、およびどの環境変数(もしあれば)が使用されているかを表示します。gh auth status --jsonがサポートされています。
その他の注意
gh pr checkout <n>はブランチを切り替えます。読み取りだけが必要な場合はgh pr diff <n>またはgh pr view <n>を使用します。NO_COLOR、CLICOLOR_FORCE、GH_FORCE_TTYは尊重されます。エージェントハーネス内で TTY スタイルの出力(色、テーブル、ページャー、インタラクティブ性)が必要な場合はGH_FORCE_TTY=1を設定します。不要な場合は設定しないでください。