Skip to main content

How to set up multiple git accounts on one machine



Because of the hot summer weather, I choose not to take the company’s MacBook Pro 2019 home. Moreover, this model is very heavy and has an unsatisfactory keyboard. After setting up my own development environment on my Mac, all I need to bring home every day is my YubiKey.

Setting up multiple git accounts

Generate a new SSH key for the office account.

Remember to paste the public key in the GitHub settings.

ssh-keygen -t ed25519 -C "[email protected]"

Adding your SSH key to the ssh-agent

Start the ssh-agent in the background.

eval "$(ssh-agent -s)"

Editing the ~/.ssh/config

Host personal-account
  AddKeysToAgent yes
  IdentityFile ~/.ssh/

Host office-account
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519_office

Adding key to the ssh-agent

ssh-add ~/.ssh/id_ed25519_personal
ssh-add ~/.ssh/id_ed25519_office

Setting up the repository

Cloning GitHub repositories using different accounts

git clone git:personal-account:{owner-username}/{the-repository-name}.git

git clone git:office-account:{owner-username}/{the-repository-name}.git

Setting up individual usernames and emails for repositories

After cloning the repository, it is important to set up the correct GitHub username and email for each repository on the system.

This ensures that commits and pushes are associated with the appropriate user.

git config "[email protected]"
git config "your-personal-github-username"

git config "[email protected]"
git config "your-office-github-username"

Modifying the URL for the Git origin

To ensure successful pushing to the remote branch, we need to modify the URL for the git origin.

git remote set-url origin git@personal:{owner-username}/{the-repository-name}.git

git remote set-url origin git@office:{owner-username}/{the-repository-name}.git

To verify, run the command git remote -v.

Setting up the GPG keys(optional)

If you have previously set up GPG on your new git account, remember to import it onto the new machine.

gpg import <key-id>

To enable GPG key signing for the repository.

gpg --list-secret-keys --keyid-format LONG

git config user.signingkey XXXXXXXXXXXXX

git config commit.gpgsign true


From now on, you can push or pull as usual.