概要
1つのマシン(PC)で会社のGitHubアカウントと個人のGitHubアカウントの両方を使いたい場合があります。今回のブログ投稿では、複数のGitHubアカウントを1つのマシンで設定して使う方法について説明します。
SSHキーの生成
複数のGitHubアカウントを使うためには、SSHキーを生成する必要があります。私はmacOSを使用しているため、macOSを基準に説明します。
まず、.sshディレクトリに移動します。
cd ~/.ssh
その後、ssh-keygenコマンドを使用してSSHキーを生成します。まず、個人アカウント用のSSHキーを生成します。
ssh-keygen -t rsa -b 4096 -C "GITHUB_PERSONAL_ACCOUNT_EMAIL"
すると、次のようにどの名前でキーを保存するか尋ねられます。
Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):
私は区別しやすくするため、id_rsa_personalという名前で保存しました。その後、会社アカウント用のSSHキーを生成します。
ssh-keygen -t rsa -b 4096 -C "GITHUB_COMPANY_ACCOUNT_EMAIL"
同様に、どの名前でキーを保存するか尋ねられます。
Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):
私は区別しやすくするため、id_rsa_workという名前で保存しました。
GitHubにSSHキー登録
生成したSSHキーをGitHubに登録する必要があります。まず、個人アカウントにSSHキーを登録してみましょう。
次のコマンドを実行すると、SSHキーを確認できます。
cat ~/.ssh/id_rsa_personal.pub
表示されたSSHキーをコピーし、GitHubのウェブサイトにアクセスしてSettings -> SSH and GPG keys -> New SSH keyをクリックしてSSHキーを登録します。この時、GitHubのウェブサイトには個人アカウントでログインしている必要があります。

これと同様の方法で会社アカウントにSSHキーを登録します。この時、GitHubのウェブサイトには会社アカウントでログインしている必要があります。
configの設定
このように設定したSSHキーを使ってGitHubのアカウントを区別するために、~/.ssh/configファイルを次のように編集します。
# personal
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
# work
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
そして、ターミナルで次のコマンドを実行してSSHキーが正しく登録されているか確認します。
ssh -T git@personal
次のようなメッセージが表示されたら、正常に登録されていることになります。
Hi GITHUB_PERSONAL_ACCOUNT! You've successfully authenticated, but GitHub does not provide shell access.
同様に、会社アカウントについても次のコマンドを実行してSSHキーが正しく登録されているか確認します。
ssh -T [email protected]
同じく、次のようなメッセージが表示されたら、正常に登録されていることになります。
Hi GITHUB_COMPANY_ACCOUNT! You've successfully authenticated, but GitHub does not provide shell access.
クローン(clone)
これでGitHubからプロジェクトをクローンする際、次のように個人アカウントと会社アカウントを区別して使うことができるようになります。
# Personal account
git clone git@personal:GITHUB_PERSONAL_ACCOUNT/REPOSITORY.git
# Company account
git clone [email protected]:GITHUB_COMPANY_ACCOUNT/REPOSITORY.git
Gitユーザ設定
次のコマンドを実行すると、Gitに設定されたuser.nameとuser.emailを確認できます。
# Check user name
git config user.name
# Check user email
git config user.email
GitのGlobal設定にユーザ情報を登録していない場合、コマンドを実行した時、何も表示されないはずです。
.gitconfigファイルを編集してGlobalユーザを設定し、特定のフォルダで使うユーザを設定することができます。
まず、~/.gitconfig-workファイルと~/.gitconfig-personalファイルを作成し、次のように編集します。
~/.gitconfig-work
# code ~/.gitconfig-work
[user]
name = "GITHUB_COMPANY_ACCOUNT_USER_NAME"
email = GITHUB_COMPANY_ACCOUNT_EMAIL
~/.gitconfig-personal
# code ~/.gitconfig-personal
[user]
name = "GITHUB_PERSONAL_ACCOUNT_USER_NAME"
email = GITHUB_PERSONAL_ACCOUNT_EMAIL
その後、.gitconfigファイルを次のように編集します。
# code ~/.gitconfig
# This is for Global settings
[user]
name = "GITHUB_COMPANY_ACCOUNT_USER_NAME"
email = GITHUB_COMPANY_ACCOUNT_EMAIL
# For company account
[includeIf "gitdir:~/WORK/"]
path = ~/.gitconfig-work
# For personal account
[includeIf "gitdir:~/PERSONAL/"]
path = ~/.gitconfig-personal
この設定では、GitのGlobalユーザとして会社アカウントを設定しました。WORKフォルダでは会社アカウントを使うようにして、PERSONALフォルダでは個人アカウントを使うように設定しました。
うまく設定されたか確認するために、PERSONALフォルダに移動します。その後、次のコマンドを実行してユーザ情報を確認します。
cd ~/PERSONAL
git config user.name
git config user.email
すると、次のようにGitのGlobalユーザ情報が表示されます。
# git config user.name
GITHUB_COMPANY_ACCOUNT_USER_NAME
# git config user.email
GITHUB_COMPANY_ACCOUNT_EMAIL
これは、現在のフォルダ(PERSONAL)にGitプロジェクトが存在しないため、単にGitのGlobalユーザ情報が表示されているだけです。
そしたら、次のように実際にGitプロジェクトを作成し、Gitのユーザ情報を確認してみましょう。
mkdir ~/PERSONAL/temp
cd ~/PERSONAL/temp
git init
git config user.name
git config user.email
すると、次のようにGitの個人アカウントのユーザ情報が表示されます。
GITHUB_PERSONAL_ACCOUNT_USER_NAME
GITHUB_COMPANY_ACCOUNT_EMAIL
これは私たちが.gitconfigに設定した内容が反映された結果です。
[includeIf "gitdir:~/PERSONAL/"]
path = ~/.gitconfig-personal
完了
これで1つのマシンで複数のGitHubアカウントを使う方法について説明しました。これにより、複数のGitHubアカウントを使いながら、プロジェクトを管理する際に便利になると思います。
また、.gitconfigを使って特定のフォルダで使うユーザを設定する方法についても説明しました。これにより、Gitのユーザ情報を簡単に変更できるようになります。
皆さんも複数のGitHubアカウントを使う必要がある場合は、このブログ投稿を参考にして複数のGitHubアカウントを設定して使ってみてください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Dekuが開発したアプリを使ってみてください。Dekuが開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。






