GitHub CLI で複数のアカウントを簡単にスイッチ可能になりました

2023.12.20

こんにちは、CX 事業本部 Delivery 部の若槻です。

このたびの GitHub CLI アップデートにより、gh コマンドで複数のアカウントを簡単にスイッチできるようになりました。

試してみた

GitHub CLI のアップデート

複数アカウント機能は、バージョン 2.40.0 でサポートされました。

brew upgrade gh コマンドで GitHub CLI を最新版にアップデートすることができます。

brew upgrade gh

ログイン状態の確認

現在どのアカウントでログインしているのか(ログイン状態)は gh auth status コマンドで確認できます。

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

現在は cm-rwakatsuki アカウントのみでログインしていることがわかります。

GitHub.com で追加のアカウントにログイン

CLI で追加のアカウントにログインするには、事前に GitHub.com(ブラウザ)でそのアカウントにログインしておく必要があります。

GitHub.com での複数アカウントのログインは一ヶ月ほど前にサポートされました。

次のように CLI で追加したいアカウントを GitHub.com でもログインしておきます。

CLI で追加のアカウントでログイン

GitHub CLI で追加のアカウントでログインするには、gh auth login コマンドを実行します。

するとブラウザでのログインを求められるのですが、その際に GitHub.com で複数アカウントでログインしている場合は、CLI でどのアカウントでログインするかを選択できます。

選択したアカウントでログインします。

ログイン成功後、r-wakatsuki および cm-rwakatsuki の 2 つのアカウントでログインできました。

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

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

この時、Active account が true になっているアカウントがアクティブなログインとなります。上記では先程ログインした r-wakatsuki がアクティブとなっています。CLI は認証情報はアクティブなアカウントのものが使われます。

アクティブなログインの切り替え

GitHub CLI でアクティブなログインを切り替えるには、gh auth switch コマンドを実行します。

$ gh auth switch
✓ Switched active account for github.com to cm-rwakatsuki

アクティブなアカウントが cm-rwakatsuki に切り替えられました。

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

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

ログアウト

gh auth logout コマンドを使うことにより、個別のアカウントからログアウトすることができます。

$ gh auth logout
? What account do you want to log out of? r-wakatsuki (github.com)
✓ Logged out of github.com account r-wakatsuki

r-wakatsuki アカウントからログアウトできました。

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

おわりに

GitHub CLI で複数のアカウントを簡単にスイッチ可能になったのでご紹介しました。

今までは複数アカウントをサポートしているのは GitHub.com だけだったので片手落ちの感があったのですが、今後は CLI でもわざわざ再ログインをすることなく複数のアカウントを切り替えられるようになりました。業務や OSS コントリビュートをする際に CLI を使う方は多いと思うので助かる方は多いのではないでしょうか。

以上