はじめに
最近、社内で自社サービスの開発が活発になってきました。 自分も開発に関わりたいと思った矢先、最初に悩まされたのは GitHub アカウントの管理です。
これまでは個人と会社のアカウントが混ざるのを防ぐため物理的に PC を分けて対応していたのですが、複数の PC を揃えるコストや異なる OS を行き来する手間を考えると2台運用はなかなか大変です。
そこで今回は1台の PC 上で複数の GitHub アカウントを切り替えて運用する方法を調べたので、設定手順を共有します。
なお、今回の手順では SSH の鍵切り替えなどを省略するため HTTPS が前提となっています。
事前準備
GitHub CLI をインストールする
brew install ghMac を使用している方は上記コマンドでインストールすることができます。 インストールした後は以下の記事を参考にアカウントの認証を行ってください。
【環境構築】wsl2-から-github-cli-を使って認証を行うまで
GitHub.com に複数アカウントでログイン

画面右上のプロフィールアイコンをクリックすると、表示されるダイアログ右上に「Account switcher」のアイコンがあり、「Add account」からアカウントを追加することでブラウザ上で複数のアカウントを切り替えられるようになります。

GitHub CLI による複数アカウントの認証
現在のステータスを確認
gh auth status
github.com
✓ Logged in to github.com account xxxxxx (keyring)
- Active account: true
- Git operations protocol: ssh
- Token: gho_************************************
- Token scopes: 'admin:public_key', 'gist', 'read:org', 'repo', 'workflow'ターミナル上で gh auth status を実行することで、現在ログインしているアカウントを確認できます。
アカウントを追加
※ ディレクトリ単位でアカウントを自動切り替えしたい場合はこの手順をスキップしてください
gh auth login
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? 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 motoki-hirayama-isubターミナル上で gh auth login を実行することで、ブラウザが立ち上がり追加したいアカウントが選択できるようになっています。

アカウントの認証が完了したら再度 gh auth status を実行します。
gh auth status
github.com
✓ Logged in to github.com account motoki-hirayama-isub (keyring)
- Active account: true
- Git operations protocol: https
- Token: gho_************************************
- Token scopes: 'gist', 'read:org', 'repo', 'workflow'
✓ Logged in to github.com account xxxxxx (keyring)
- Active account: false
- Git operations protocol: https
- Token: gho_************************************
- Token scopes: 'admin:public_key', 'gist', 'read:org', 'repo', 'workflow'追加したアカウントが表示されていることが確認できました。
追加したアカウントを切り替える
手動切り替え
gh auth switch上記コマンドを実行することでアカウントを切り替えることができます。
gh auth switch --user アカウント名アカウントを指定して切り替えたい場合は –user でアカウント名を指定できます。
自動切り替え
direnv を使用してディレクトリごとの環境変数を作成することで、アカウントの自動切り替えを実現します。 私の環境では ghq を使ってリポジトリを管理しているため、ghq/github.com/isub-inc に対して環境変数を設定します。
https://github.com/x-motemen/ghq
eza --tree --git-ignore --level=3
.
└── github.com
├── isub-inc
│ └── vivaya_web
└── xxxxxx
└── dotfilesdirenv をインストール
https://github.com/direnv/direnv
brew install direnv初期設定
# 以下を .zshrc へ追記
eval "$(direnv hook zsh)"
# 設定を反映
source ~/.zshrc環境変数の設定
会社用のディレクトリ配下(ghq/github.com/isub-inc/ など)に .envrc を作成し以下を記述します。
export GH_CONFIG_DIR="$HOME/.config/gh-work"初回保存時は以下のようなエラーが出ますが、指示通り direnv allow を実行しておきます。
vim .envrc
direnv: error ghq/github.com/isub-inc/.envrc is blocked.
Run `direnv allow` to approve its contentこれで direnv によって GitHub CLI が参照する設定ファイルが切り替わりました。
gh auth loginこのディレクトリ用の設定を作成するために、再度 GitHub CLI による認証を行います。
このように設定することで、特定のディレクトリ配下では $HOME/.config/gh-work を参照し、それ以外のディレクトリでは $HOME/.config/gh を参照して認証を行うようになります。
動作確認
設定したディレクトリ
gh auth status
github.com
✓ Logged in to github.com account motoki-hirayama-isub (keyring)
- Active account: true
- Git operations protocol: https
- Token: gho_************************************
- Token scopes: 'gist', 'read:org', 'repo', 'workflow'設定していないディレクトリ
gh auth status
github.com
✓ Logged in to github.com account xxxxxx (keyring)
- Active account: true
- Git operations protocol: https
- Token: gho_************************************
- Token scopes: 'admin:public_key', 'gist', 'read:org', 'repo', 'workflow'コマンドを実行したディレクトリによってアカウントが切り替わっていることが確認できました。
Git のユーザー設定も自動で切り替える
コミットなどで使用される Git のユーザー設定も自動で切り替わるようにします。 Git には標準で includeIf という識別子が用意されているため、.gitconfig に以下の設定を記述することで、特定のディレクトリで使用する設定を切り替えることができます。
# [user] 設定よりも後に追記
[includeIf "gitdir:~/ghq/github.com/isub-inc/"]
path = ~/.gitconfig-work指定したパスに .gitconfig-work を作成し、以下のように設定を追記します。
[user]
name = 会社用のユーザー名
email = 会社用のメールアドレスこれで指定したディレクトリ配下では .gitconfig-work に記述した情報が使用されるようになりました。
# ~/ghq/github.com/isub-inc/vivaya_web
git config user.name
motoki-hirayama-isubさいごに
最初は zsh のスクリプトを書いたりと小難しい設定をする方針で進めていたのですが、最終的にはディレクトリベースのシンプルな設定にまとめることができとても満足しています。
一度設定してしまえば意識せずに使い分けることができるので、皆さんも是非試してみてください。
投稿者プロフィール
最新の投稿
【環境構築】2025年12月7日複数のGitHubアカウントを使い分ける方法
【React】2025年11月1日React 学習ログ – 環境構築からHello Worldまで
【Node.js】2025年10月16日Node.jsバージョン管理ツールについて調べてみる
【環境構築】2025年10月14日WSL2 から GitHub CLI を使って認証を行うまで

























