Conditional Git Configuration
I recently had the need to use multiple identities when writing commits in Git
from a single laptop. I have a standard .gitconfig
file which contains my
preferred settings for colours, aliases, etc. This file also holds my personal
email address that I use for GitHub.
# ~/.gitconfig
[user]
email = chris@mydomain.com
name = Chris Forbes
As I wanted to use my work email for work related projects, I did some quick research to find that Git has offered conditional inclusion of settings since version 2.13.
With this in mind, I can update my .gitconfig
file to have my default settings,
but also include a reference to a separate file to
be used when in a sub-directory of a particular path.
# ~/.gitconfig
[user]
email = chris@mydomain.com
name = Chris Forbes
[includeIf "gitdir:~/dev/work/"]
path = ~/.gitconfig.work
On Windows it’s slightly different and we use gitdir/i
(case insensitive)
to also make it work with Visual Studio Code.
# ~/.gitconfig
[user]
email = chris@mydomain.com
name = Chris Forbes
[includeIf "gitdir/i:C:/dev/work/"]
path = ~/.gitconfig.work
The included file contains any settings that need to be overridden.
# ~/.gitconfig.work
[user]
email = chris@example.com
This means that when I am in a directory like ~/dev/work/some-project
,
and I make a commit, it will use the work email address instead of the personal
email address. A nice little addition that makes working with different
identities much simpler.