Conditional git configuration
Change your git config based on your project directory.
I recently went through the process of setting up a new machine: installing apps, customizing dotfiles, and configuring git. One little nifty trick I want to highlight today is using conditional includes for your global git options.
But why?
This technique could be used for various git setting, but I've primarily used it for conditionally setting the git identity.
At work, we have the choice of using a dedicated or single GitHub account when working on code. When jumping between repos, I want an easy way to maintain proper commit author info by ensuring my personal and work emails where being used for the corresponding repositories.
Setting a global user and email
Git associate your identity with every commit you make. You can set or change your git identity using the
git config
~/.gitconfig
# ~/.gitconfig [user] name = Your Name email = personal@website.com
Conditional extending the git configuration
The global git configuration can be extended based on the location of the repository on your file system. We can have a global configuration for all our default and then a specify overrides for all repos in a directory.
If we have all work related repos in the
~/work/
~/work/.gitconfig
# ~/.gitconfig [user] name = Your Name email = personal@website.com [includeIf "gitdir:~/work/"] path = ~/work/.gitconfig
# ~/work/.gitconfig [user] name = Your Name email = work@website.com
Pro tip if you are using GitHub, checkout the Settings > Notifications page. Under the "Custom routing" section, you can configure notifications to different verified email addresses based on the organization.
Further reading
This is just one use-case for using the conditional includes feature in git. You can learn the details and see more examples in the git documentation here.
Subscribe to the newsletter
Be the first to know when I post something new! Thoughts about code, design, startups and other interesting things.