[GitHub] 複数のGitHubアカウントを1つのマシンで使う方法

2024-10-05 hit count image

1つのマシン(PC)で複数のGitHubアカウントを設定して使う方法について説明します。

概要

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のウェブサイトには個人アカウントでログインしている必要があります。

Use multiple GitHub users in local machine: Register new SSH key

これと同様の方法で会社アカウントに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キーが正しく登録されているか確認します。

同じく、次のようなメッセージが表示されたら、正常に登録されていることになります。

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.nameuser.emailを確認できます。

# Check user name
git config user.name
# Check user email
git config user.email

GitGlobal設定にユーザ情報を登録していない場合、コマンドを実行した時、何も表示されないはずです。

.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

この設定では、GitGlobalユーザとして会社アカウントを設定しました。WORKフォルダでは会社アカウントを使うようにして、PERSONALフォルダでは個人アカウントを使うように設定しました。

うまく設定されたか確認するために、PERSONALフォルダに移動します。その後、次のコマンドを実行してユーザ情報を確認します。

cd ~/PERSONAL
git config user.name
git config user.email

すると、次のようにGitGlobalユーザ情報が表示されます。

# git config user.name
GITHUB_COMPANY_ACCOUNT_USER_NAME
# git config user.email
GITHUB_COMPANY_ACCOUNT_EMAIL

これは、現在のフォルダ(PERSONAL)にGitプロジェクトが存在しないため、単にGitGlobalユーザ情報が表示されているだけです。

そしたら、次のように実際に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で開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts