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/config
- Replacing 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 ~/.zshrc
orcode ~/.bashrc
Note I have VSCode configured to open files in VSCode with the
code
command. If it's not working for you, feel free to usevi
ornano.
-
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.name
I suggest you add an alias.-
code ~/.zshrc
orcode ~/.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-git
to see the current activated git user
Push to Repositories
- Switch Account
- Perform Git Operations
Is it helpful to use? Let me know!
Top comments (0)