← All posts

Managing multiple Git profiles

What if Git already knew whether to use your work email or personal? Say no more. Here's how.

Header image
By Rahul on 
Share on Twitter Share on LinkedIn Share on Facebook

If you use git as the version control tool for both your personal projects and at work, chances are that you want to isolate the two (or more) profiles, i.e. at the very least, using different emails for creating commits and tags. Other uses might include using different usernames (for different GitHub accounts), gpg-keys, etc.

One straightforward way of tackling this is to remember setting the correct configuration whenever you clone (or initialize) a new repo:

git config user.name "priam"
git config user.email "king@troy.tr"

Besides, being painstakingly mundane, it is yet another thing to remember. Nevermind the time and effort of rewriting history if you have already created commits.

But wait, there’s a better way

Git offers a much more flexible way of specifying conditional config files based on your current directory — if you use a different directory for all your work repos (let’s say ~/work/), then you can specify the following in your ~/.gitconfig to automatically use your work credentials inside them:

[include]
	path = ~/git-personal.conf
[includeIf "gitdir:~/work/"]
	path = ~/git-work.conf

Each conf file can then define it’s own user, e.g. ~/git-personal.conf:

[user]
	name = realerlich
	email = erlich@hacker.hostel
	signingkey = FF5353EC154B6811

and ~/git-work.conf:

[user]
	name = erlich
	email = ebachman@aviato.com
	signingkey = CE3454AA132E6F2E

There, all set now! Whenever you are working inside a repo that lives under ~/work, Git will automatically use your work email. Go ahead, try it out!

About DeepSource
DeepSource helps you automatically find and fix issues in your code during code reviews, such as bug risks, anti-patterns, performance issues, and security flaws. It takes less than 5 minutes to set up with your Bitbucket, GitHub, or GitLab account. It works for Python, Go, Ruby, and JavaScript.
Get started for free

Keep reading...