Have you ever run into a problem where you want to push your code to a company repo, but you don't want to push using git with your personal email?
Here's how easy you can separate your Git for work and Git for personal
First, you must make new SSH Keys with your work email and add it to your work account in your company repo. Make sure you name your ssh key files to be something like id_ed25519_work
to differentiate your SSH key for personal and work. Here's how to generate SSH keys.
If you open your git config in ~/.gitconfig
, you'll probably have something like this.
[user]
name = yourusername
email = youremail@mail.com
In Windows you can find your git config file in C:\Users\[YOURUSERNAME]\.gitconfig
.
That is for your personal git account. For your working git account, you can make another git config file, for example .gitconfig-work
, and you can fill your file with this
[user]
name = yourusername
email = yourworkemail@company.com
In your original git config file, add this line
[user]
name = yourusername
email = youremail@mail.com
[includeIf "gitdir/i:[location to your company's project folder]/"]
path = ~/.gitconfig-work
for example, it would be like this.
[user]
name = yourusername
email = youremail@mail.com
[includeIf "gitdir/i:~/working/projectA/"]
path = ~/.gitconfig-work
and update your gitconfig-work
to be like this
[user]
name = yourusername
email = yourworkemail@company.com
[core]
sshCommand = "ssh -i ~/.ssh/id_ed25519_work"
That's it! So, whenever you're in your company's project folder, your Git will automatically use your work email and username with your seperate ssh keys.
You can test your ssh file by typing this in your terminal.
ssh -i ~/.ssh/id_ed25519_work -T git@gitlab.com
and you can test if it's work by typing this from your company's project folder and check if your work email comes up.
git config --show-origin --get user.email
You can change that gitlab.com to github.com if you're using github.
You might want to close all the terminals, or try to logout/restart your computer if it's not working.
Hope this help and Thanks for reading!
Top comments (1)
I was spending close to an hour on this looking this up in multiple places. This post saved me from more hours of frustration. Thank you so much!
I used to have this working properly in Linux and so on Windows it was not working correctly, and because of a missing trailing slash. Sad life.