You may want to configure multiple GitHub accounts for various purposes. A common example is needing to make contributions to both personal and work projects.
In most cases, you’ve already configured your personal account. So, let’s jump into configuring the second account for your work account. You’ll first need to create a new SSH key pair to manage multiple GitHub accounts on the same machine.
ssh-keygen -t ed25519 -C “[email protected]” -f ~/.ssh/id_ed25519_work
-C
means a comment. It can be helpful to know the email associated with the account.
-f
specifies the path to the ssh key
Now, copy your public key and add it to GitHub. I’ll be using pbcopy
to copy my public key to the clipboard from ~/.ssh/id_ed25519_work.pub
pbcopy > ~/.ssh/id_ed25519_work.pub
To add your public key to GitHub, go to GitHub settings
> SSH and GPG Keys
> New SSH Key
. Add a title for your new SSH key, paste the key you’ve copied to your clipboard, and then click on Add SSH Key.
Once you’ve added the key to GitHub let’s manage some configs on our device. The SSH config file is located in the .ssh
directory. Usually ~/.ssh/config
. If the config file is not yet created you can create one using touch ~/.ssh/config
.
Update the config file with a new block that defines a relation with the SSH key to your GitHub Account.
#Personal account
Host github.com-githubUser1
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
#Anish Cleavr account
Host github.com-githubUser2
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
githubUser1
and githubUser2
are GitHub usernames of the respective account. ~/.ssh/id_ed25519_personal
and ~/.ssh/id_ed25519_work
are paths to the ssh keys for their respective accounts. You need to update these values accordingly and save the file.
I’ve created a private repository on GitHub from one of the accounts. Let’s try cloning the repo from both accounts and see what happens.
Cloning from the account that has access to it:
git clone [email protected]:theanishg/example-repo.git
I was able to clone the repo as expected.
As expected I got denied while cloning the repo from another account that doesn’t have access to it.
Let’s invite this user to the private repo and try cloning it again.
After accepting the invitation I was able to clone the repo.
Ensure that the remote URL is in the proper format. [email protected]{{ username }}:{{ repoOwnerUsername/organizationUsername }}/{{ repoName }}.git
While copying the URL from GitHub to clone add your username after [email protected]
by separating it with -
.
Now, change the directory to the project that you’ve recently cloned and run git config –local -e
to open local config file. Add the following user details to it.
user
name = Anish Ghimire
email = [email protected]
The config file should look somewhat like this:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote “origin”]
url = [email protected]:theanishg/example-repo.git fetch = +refs/heads/*:refs/remotes/origin/*
[branch “main”]
remote = origin merge = refs/heads/main
I’ve cloned the same repository inside two different directories as two different users. Let’s verify these by making some changes and pushing them from both users.
As you can see from the screenshot above, we were able to make commits to repo from different users. You can now perform all other actions like pull/push/commit etc.
The post was originally posted in Cleavr.
Be First to Comment