[GitHub] How to use multiple GitHub accounts on one machine

2024-10-05 hit count image

Let's see how to set up and use multiple GitHub accounts on one machine (PC).

Outline

Sometimes you may want to use both your company’s GitHub account and your personal GitHub account on one machine (PC). In this blog post, I will introduce how to set up multiple GitHub accounts on one machine.

Create SSH key

To use multiple GitHub accounts, you need to create an SSH key. I use macOS, so I will explain based on macOS.

First, go to the .ssh directory.

cd ~/.ssh

Next, use the ssh-keygen command to create an SSH key. First, create an SSH key for your personal account.

ssh-keygen -t rsa -b 4096 -C "GITHUB_PERSONAL_ACCOUNT_EMAIL"

Then, you will be asked what name to save the key as.

Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):

In my case, I saved it as id_rsa_personal for easy distinction. Next, create an SSH key for your company account.

ssh-keygen -t rsa -b 4096 -C "GITHUB_COMPANY_ACCOUNT_EMAIL"

Again, you will be asked what name to save the key as.

Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):

In my case, I saved it as id_rsa_work for easy distinction.

Register SSH key on GitHub

You need to register the generated SSH key on GitHub. First, let’s register the SSH key for the personal account.

Run the following command to check the SSH key.

cat ~/.ssh/id_rsa_personal.pub

Copy the displayed SSH key and go to the GitHub website. Click Settings -> SSH and GPG keys -> New SSH key to register the SSH key. You need to be logged in with your personal account on the GitHub website.

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

Register the SSH key on the GitHub website in the same way for the company account. You need to be logged in with your company account on the GitHub website.

Modify config file

To distinguish between GitHub accounts using the SSH key you set up, modify the ~/.ssh/config file as follows.

# 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

Then, execute the following command to check if the SSH key is registered.

ssh -T git@personal

If the following message appears, the SSH key has been successfully registered.

Hi GITHUB_PERSONAL_ACCOUNT! You've successfully authenticated, but GitHub does not provide shell access.

In the same way, execute the following command to check if the SSH key is registered for the company account.

If the following message appears, the SSH key has been successfully registered.

Hi GITHUB_COMPANY_ACCOUNT! You've successfully authenticated, but GitHub does not provide shell access.

Clone

Now, when you clone a project from GitHub, you can distinguish between your personal account and your company account as follows.

# Personal account
git clone git@personal:GITHUB_PERSONAL_ACCOUNT/REPOSITORY.git
# Company account
git clone [email protected]:GITHUB_COMPANY_ACCOUNT/REPOSITORY.git

Git user settings

When you execute the following command, you can check the user.name and user.email set in Git.

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

If you have not registered user information in the Global settings of Git, nothing will appear when you execute the command.

You can set the Global user and set the user to use in specific folders by modifying the .gitconfig file.

First, create the ~/.gitconfig-work file and the ~/.gitconfig-personal file and modify them as follows.

  • ~/.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

Then, modify the .gitconfig file as follows.

# 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

In this setting, the user information for the company account is set as the Global user of Git. In the WORK folder, the company account is used, and in the PERSONAL folder, the personal account is used.

To check if the settings are correct, go to the PERSONAL folder. Then, execute the following command to check the user information.

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

Then, the Global user information of Git will be displayed as follows.

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

This is because there is no Git project in the current folder (PERSONAL) at the moment. So, the Global user information of Git is displayed.

Next, let’s create an actual Git project and check the user information of Git.

mkdir ~/PERSONAL/temp
cd ~/PERSONAL/temp
git init
git config user.name
git config user.email

Then, then personal account user information of Git will be displayed as follows.

GITHUB_PERSONAL_ACCOUNT_USER_NAME
GITHUB_COMPANY_ACCOUNT_EMAIL

This is because we have set the personal account user information in the .gitconfig file as follows.

[includeIf "gitdir:~/PERSONAL/"]
    path = ~/.gitconfig-personal

Completed

Done! We’ve seen how to use multiple GitHub accounts on one machine. Now you can manage projects without any inconvenience using multiple GitHub accounts on one machine.

Also, we’ve seen how to set the user to use in specific folders using the .gitconfig file. You can now easily change the user information of Git.

If you need to use multiple GitHub accounts, I hope you can refer to this blog post and set up and use multiple GitHub accounts.

Was my blog helpful? Please leave a comment at the bottom. it will be a great help to me!

App promotion

You can use the applications that are created by this blog writer Deku.
Deku created the applications with Flutter.

If you have interested, please try to download them for free.

Posts