MS_GitHubCLI - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

GitHub CLI

概要

  • コマンドライン(CLI)上で GitHub の操作を行える公式ツール
  • インストールすると、gh コマンド が使えるようになる。

補足(git との違い): git が扱うのは
**リポジトリ(コミット、ブランチ、履歴)**だけで、
Issue・Pull Request・Actions・Releases といった
GitHub 側の機能は Web 画面か API でしか触れなかった。
gh はそこを CLI から扱えるようにするツールである。
後述の「結局、Git を使っている」という著者の観察は、
この役割分担を言い当てている。

詳細

インストール

Windows

  • インストール

    winget install --id GitHub.cli
    
  • アップグレード

    winget upgrade --id GitHub.cli
    

移行メモ(衍字): アップグレードのコマンド末尾に
余分な | が付いていたため除去した。

macOS

  • インストール

    brew install gh
    
  • アップグレード

    brew upgrade gh
    

初期設定

バージョン確認

何気に、インストール後、シェル再起動が必要。

gh --version

ログイン

gh auth login
  • 認証コマンドの動きの例(選択によって可変)
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: XXXX-XXXX
Press Enter to open https://github.com/login/device in your browser...
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as XXXXXXXXXXXX
  • 上記を複数回行って、複数アカウントでログイン可能

補足(このフローは Device Authorization Grant): 「ワンタイム コードを
コピーしてブラウザで入力する」という上記の認証は、
OAuth の Device Authorization Grant(RFC 8628)
そのものである。
CLI のようにブラウザのリダイレクトを受け取れないクライアントのための
標準的な認証方式で、Authenticate Git with your GitHub credentials? Yes
選ぶと、取得したトークンが git の資格情報ヘルパーにも設定される。

ログイン確認

gh auth status
github.com

✓ Logged in to github.com account XXXXXXXXXXXX (keyring)
- Active account: true
- Git operations protocol: https
- Token: gho_************************************
- Token scopes: 'gist', 'read:org', 'repo', 'workflow'

✓ Logged in to github.com account YYYYYYYYYYYY (keyring)
- Active account: false
- Git operations protocol: https
- Token: gho_************************************
- Token scopes: 'gist', 'read:org', 'repo', 'workflow'

アカウント切替

  • 基本

    gh auth switch
    
  • ユーザ指定

    gh auth switch --user XXXXXXXXXXXX
    

ログアウト

  • 基本

    gh auth logout
    
  • ユーザ指定

    gh auth logout --user XXXXXXXXXXXX
    

補足(複数アカウントの使い分け): 上の gh auth status の出力にある
Active account: true / false のとおり、
同時にログインできても、有効なのは 1 つだけである。
業務用と個人用のアカウントを行き来する場合は
gh auth switch で切り替える。
トークンは OS の資格情報ストア((keyring) の表示)に保存される。

エージェント連携

結局、Gitを使っている

  • エージェントに操作させると何気に結局、Git を使っているケースが多い。
  • ただ、このケースでも、git の認証を gh で行っているので、結果オーライではある。

Issue新規登録

Issue に新規登録してもらいました。

Issue分析更新

忘却彼方の Issue を分析更新してもらいました。

Wiki編集

ドキュメントを Wiki アップしてもらいました。

移行メモ(記録としての節): 「エージェント連携」の 3 項目は、
著者が LLM コーディング エージェントに実際に作業させた記録である
(具体的な手順は書かれていない)。
元ページの記述をそのまま残す。

補足(gh の主なコマンド): 上記の用途に対応する gh のコマンドは以下。

用途 コマンド
Issue の作成・一覧・編集 gh issue create / list / edit
Pull Request の作成・レビュー gh pr create / review / merge
Actions の実行状況 gh run list / view / watch
リポジトリのクローン・作成 gh repo clone / create
API を直接叩く gh api <エンドポイント>

なお Wiki の編集用サブコマンドは gh には無いため、
<リポジトリ>.wiki.gitgit でクローンして編集することになる
(「結局、Git を使っている」の一例)。

参考

本 Wiki 内


Tags: .NET開発, 構成管理ツール, CI, IaC

⚠️ **GitHub.com Fallback** ⚠️