Since the begining of time, since I started using git that is. I've always had a global ~/.gitconfig file with some aliases, e-mail, name and whatnot.
Being a consultant working with different customers I always forget to change it when I switch client and on top of that many of my personal projects have niklas.nihlen@client-email in the commits.
Just about to change client now so I decided to look into it and found that git since version 2.13 supports something called Conditional Configuration Icludes. But since I have a hard time grocking git's official documentation I'll show a small example instead, for future me and whoever else is intrested :).
I have a new client named client-x and I want all git commits in the client-x folder and subfolders to have the e-mail address given to me byt the client
niklas@client-x, for everyting else I want to keep my personal e-mail
niklas@personal. My folderstructure looks like this:
~/ ├── .gitignore ├── dev/ ├── personal-project-1 ├── personal-project-2 ├── personal-project-3 └── client-x ├── client-repo-1 └── client-repo-n
I still want all my aliases and stuff to be global. So I created a new gitconfig file in the client directory
~/dev/client-x/.gitconfig just containing my client provided e-mail address:
[user] email = niklas@client-x
Then I updated my global
~/.gitconfg to make use of the
[user] name = Niklas Nihlén email = niklas@personal [includeIf "gitdir:~/dev/client-x/"] path = ~/dev/client-x/.gitconfig
Works like a charm I don't need to remeber to switch e-mail addresses anymore!