GitHub / CLI

GitHub CLI(gh)を入れて認証するまでの自分用メモ

氷河期世代のクラウドエンジニア、terralienです。たまに環境を作り直すと、GitHub CLIの導入手順を毎回検索しているので、ここに自分用の手順として残しておきます。 IssueやPull Requestをブラウザへ行ったり来たりせず扱えるので、覚えておくと地味に作業が楽になります。

夜の机に開いたノートパソコンと外部ディスプレイ。ディスプレイにはブラウザ画面と青く光る南京錠、左手には認証のつながりを表すノード図が浮かぶイメージ
ターミナルで操作しても、最初の認証はブラウザから始まります。

まずghをインストールする

GitHub CLIは、GitHub公式のコマンドラインツールです。OSごとの導入方法は複数ありますが、手元の環境に合わせて次のどれかを実行します。

  • macOSならHomebrew
  • Windowsならwinget、またはScoop
  • Debian / Ubuntuならapt
# macOS
brew install gh

# Windows(PowerShell)
winget install --id GitHub.cli
# または
scoop install gh

# Debian / Ubuntu
sudo apt install gh

インストールできたかは、バージョン表示で確認します。ここでcommand not foundになるなら、まずPATHを疑います。

gh --version

ブラウザでGitHubにログインする

初回は次のコマンドを実行します。対話形式の質問が出るので、迷ったらGitHub.com、HTTPS、Gitにも認証情報を使う、ブラウザ認証の順で進めれば大丈夫です。

gh auth login
  1. GitHub.comを選ぶ
  2. Git操作のプロトコルはHTTPSまたはSSHを選ぶ
  3. GitにもGitHubの認証情報を使うならYを選ぶ
  4. Login with a web browserを選ぶ

画面に表示されたワンタイムコードをコピーしてEnterを押すと、ブラウザの認証画面が開きます。コードを入力して許可すれば完了です。 パスワードやトークンをシェルの履歴へ直接貼り付けるより、この流れのほうが事故が少ないですね。

認証できたかを確認する

成功したかどうかは、ログイン画面を眺めるよりコマンドで確認するほうが早いです。

gh auth status
  • ログイン先がgithub.comになっているか
  • 想定したアカウント名が表示されているか
  • Git操作のプロトコルがHTTPSかSSHか
  • Active accountが意図したアカウントか

ここで大事なのは、gh auth statusはGitHub CLIの認証確認だということです。git pushだけが失敗する場合は、remote URLやSSHキーなど、Git側の設定も別に確認します。

自分用に設定しておくと便利なもの

毎回設定する必要はありませんが、IssueやPRをターミナルから作る人は、エディタとGitのプロトコルを先に決めておくと迷いません。

# VS Codeを使う場合
gh config set editor "code --wait"

# vimを使う場合
gh config set editor "vim"

# Git操作をSSHに寄せる場合
gh config set git_protocol ssh

よく使う一覧にはaliasも便利です。たとえば自分が作成したオープン中のPRを短いコマンドで確認できます。

gh alias set myprs "pr list --author @me --state open"
gh myprs
  • aliasは短く、意味が分かる名前にする
  • 設定値はgh config listで見直せる
  • 共有端末では認証アカウントを必ず確認する

実際に困りやすい注意点

何度か環境を作り直して分かったのは、「ログインできた」と「目的の操作ができる」は少し違うということです。特に複数アカウントや複数リポジトリを扱うと、設定の食い違いが起こりやすくなります。

  • gh auth statusでアカウントとActive状態を確認してからIssueやPRを操作する
  • HTTPSとSSHを混在させず、チームや自分の運用に合わせて決める
  • 認証トークンをコマンドの引数や記事、ログへ貼らない
  • うまくいかないときはgh <command> --helpで、そのバージョンの引数を確認する

公式マニュアルはgh auth login、gh auth status、gh config setにまとまっています。画面や選択肢が変わったときは、ここを見直すのが確実です。

最後に動作確認する

最低限、次の3つが通れば初期設定は終わりです。リポジトリの場所を指定すると、今いるディレクトリに関係なく確認できます。

gh auth status
gh repo view OWNER/REPOSITORY
gh pr list --repo OWNER/REPOSITORY --state open
  • 認証状態が表示される
  • 対象リポジトリの情報が表示される
  • Pull Requestの一覧が取得できる

GitHubをブラウザで開く回数を少し減らせるだけでも、日々の運用では効いてきます。とはいえ、久しぶりに触るとまた忘れるので、このメモを検索するところまで含めて自分の手順ということにしておきます。