Cool Tools: Use multiple GitHub Accounts on a mac

A software engineer with over 13 years of experience navigating various tech landscapes on multiple domains, developed apps and microservices, and led transformative projects, all while embracing challenges with an innovative and enthusiastic spirit.
To use multiple GitHub accounts on the same machine, we must configure our Git settings properly. Here are the steps to help set up using work and personal email addresses.
Set-up
Generate SSH Keys: Using the command,
- For work:
❯ ssh-keygen -t ed25519 -C "<work_git_email>" -f ~/.ssh/<work_ssh_file_name> For personal:
❯ ssh-keygen -t ed25519 -C "<personal_git_email>" -f ~/.ssh/<personal_ssh_file_name>and follow the prompts and choose a secure passphrase.
- For work:
Add SSH Keys to GitHub/GitLab:
- Go to GitHub/GitLab account settings ➡️ SSH and GPG keys ➡️ New SSH key
- Then copy the contents of the public key file (usually
~/.ssh/<xxxx>.pub) and paste it into the key field.❯ cat ~/.ssh/<xxxx>.pub
- Configure Git for Multiple Emails:
- For work:
git config --global user.email "<work_git_email>" - For personal:
git config --global user.email "<personal_git_email>"
- For work:
Add and Configure the Config File: Create a new config file if it does not exist.
code ~/.ssh/configReplacing the placeholders with the actual paths to your private keys and add the following configuration:
# work account Host github-work HostName github.com User git IdentityFile ~/.ssh/<work_ssh_file_name> # personal account Host github-personal # Change the name of the host as you like HostName github.com # gitlab.com or github.com User git IdentityFile ~/.ssh/<personal_ssh_file_name> # Change with actual path
Yoohoo! Set up done…
Clone Repositories
Now, clone repositories using the custom host aliases defined in the .ssh/config file:
- For work:
git clone git@github-work:username/repository.git - For personal:
git clone git@github-personal:username/repository.git
Switch GitHub Accounts Seamlessly
Here's how you can set up aliases for switching accounts quickly:
Open your shell configuration file:
code ~/.zshrcorcode ~/.bashrcNote I have VSCode configured to open files in VSCode with the
codecommand. If it's not working for you, feel free to useviornano.Add the aliases:
alias use-work='git config user.email "<work_git_email>" && git config user.name "Your Name"'alias use-personal='git config user.email "<personal_git_email>" && git config user.name "Your Other Name"'Copy these lines into configuration file.
Save and apply changes:
- Save the change
- Apply the change:
source ~/.zshrc
- Using the aliases:
Now, you can use the aliases to switch between accounts.
- If you want to switch to the work account:
use-work - Switch back to the personal account:
use-personal
- If you want to switch to the work account:
Check Current GitHub Account Configuration:
- Check the current configuration for the repository using the following commands:
git config user.email && git config user.nameI suggest you add an alias.code ~/.zshrcorcode ~/.bashrc- Add
alias which-git='git config user.email && git config user.name' - Save the change
- Apply the change:
source ~/.zshrc
- Then use the command
which-gitto see the current activated git user
Push to Repositories
- Switch Account
- Perform Git Operations
Is it helpful to use? Let me know!



