I often need to juggle between different Git settings depending on the type of project. For instance, I need to use a different email address and signing key when committing. Luckily, Git has a feature called [includeIf] that helps me manage multiple Git configurations with ease.
For example, I store my work projects in
~/workspaces/work and my personal projects in
~/workspaces/personal. In my
~/.gitconfig, I added the following
[includeIf "gitdir:~/workspaces/work/"] path = ~/.config/git/work-config [includeIf "gitdir:~/workspaces/personal/"] path = ~/.config/git/personal-config # ...all other Git settings
This tells Git to include the configuration file at the specified path when I’m working in the matching directory.
For example, in
~/.config/git/personal-config, I set my GitHub email address and signing key:
[user] email = firstname.lastname@example.org signingkey = ssh-ed25519 AAAAweriaksjldhfkjasbvlkasbv
Now, when I’m working in the
~/workspaces/personal directory, Git automatically uses the
[user] settings in