Gitその他

仕事用のGitHubアカウントとプライベート用のGitHubアカウントの切り替え方法

Git
この記事は約4分で読めます。

はじめに

株式会社implの奈良です。

GitHubを利用する際、仕事用とプライベート用で異なるアカウントを持つ方は少なくないでしょう。しかし、アカウントを切り替える際、毎回手動で設定を変更するのは非常に手間です。そこで今回は、シェルスクリプトを使ってコマンド一つで簡単にGitHubアカウントを切り替える方法を紹介します。

必要なツール

  • macOSまたはLinux
  • zsh シェル(macOSではデフォルトでzshが使用されています)
  • Gitの基本的な知識

~/.zshrc ファイルの編集

まず、シェルの設定ファイルに切り替え用の関数を追加します。zsh シェルの設定ファイルである ~/.zshrc を編集します。

ターミナルを開き、以下のコマンドを実行して ~/.zshrc を開きます。

vi ~/.zshrc

~/.zshrc の末尾に以下のスクリプトを追加

# GitHubアカウントの切り替え用関数
function gitmain() {
  git config --global user.name "your-work-username"
  git config --global user.email "your-work-email@example.com"
  echo "Switched to work account:"
  echo "user.name: $(git config --global user.name)"
  echo "user.email: $(git config --global user.email)"
}

function gitsub() {
  git config --global user.name "your-private-username"
  git config --global user.email "your-private-email@example.com"
  echo "Switched to private account:"
  echo "user.name: $(git config --global user.name)"
  echo "user.email: $(git config --global user.email)"
}

// gitmain() 関数では、仕事用のGitHubアカウントに切り替えます。
// gitsub() 関数では、プライベート用のGitHubアカウントに切り替えます。

ファイルを保存して閉じます。viで編集している場合は、以下の手順で保存します。

  • Esc キーを押して編集モードを終了します。
  • :wq と入力してエンターキーを押します。

設定の適用

~/.zshrc ファイルを編集しただけでは、現在のシェルに設定が反映されていないので、以下のコマンドを実行して変更を適用します。

source ~/.zshrc

これで、追加した関数が使用できるようになります。

GitHubアカウントの切り替え

仕事用アカウントに切り替え

仕事用のアカウントに切り替えたいときは、以下のコマンドを実行します。

gitmain

実行後、ターミナルに以下のようなメッセージが表示され、切り替えが確認できます。

Switched to work account:
 user.name: your-work-username
 user.email: your-work-email@example.com

プライベート用アカウントに切り替え

プライベート用のアカウントに切り替えたいときは、以下のコマンドを実行します。

gitsub

実行後、以下のメッセージが表示されます。

Switched to private account:
 user.name: your-private-username
 user.email: your-private-email@example.com

まとめ

上記で解説した設定を使えば、仕事用とプライベート用のGitHubアカウントを簡単に切り替えられます。毎回手動で設定を変更する手間を省けるため、プロジェクトの切り替えがスムーズになります。~/.zshrc ファイルを使うことで、設定が持続的に保存され、シェルの再起動後も使用できるのがメリットです。

私は仕事と勉強用でGit管理を分けたいと同僚に相談したときに上記の方法を教わりました。かなり便利なので設定をしておくことをお勧めします。

※今回の記事では、アカウント切り替え後に本当にGitHubアカウントが切り替わっているかをコマンドで確認する手間を省くためにアカウント情報等を表示していますが、セキュリティ観点から不要と判断する場合は適宜アカウント情報表示箇所を削除してください!