Yesterday I gave an abridged version of my Data Science Workflows using Docker Containers talk at my employer's Biweekly Engineering Lunch session.
It had been a minute since I last gave this talk so I ran through the examples to make sure everything worked. Having all my examples containerized is a bit of a cheat code, but I did modify a couple of
Dockerfiles to make the demo function. Pushing my changes back to GitHub required me to change my local git repo config:
git config user.name "Aly Sivji" git config user.email "email@example.com"
This is great, but it only works for that one project. And what if I forgot to change this setting?
I decided to overengineer this solution by creating a
.gitconfig that only applies in certain folders. This post documents how to enable multiple
.gitconfig files to control how Git looks and operates in different directories.
Git comes with a tool called git config that lets you get and set configuration variables that control all aspects of how Git looks and operates.
First, a quick review: Git uses a series of configuration files to determine non-default behavior that you may want. The first place Git looks for these values is in the system-wide /etc/gitconfig file, which contains settings that are applied to every user on the system and all of their repositories. If you pass the option --system to git config, it reads and writes from this file specifically.
The next place Git looks is the ~/.gitconfig (or ~/.config/git/config) file, which is specific to each user. You can make Git read and write to this file by passing the --global option.
Let's say that we want to have all folders inside of
~/siv-dev/client-work to have a different Name and Email in the commit logs.
This configuration file will contain settings we want to apply to all subdirectories. Create the following files and save to
[user] name = Aly Sivji email = firstname.lastname@example.org
We will need to add the following lines to our global
[includeIf "gitdir:~/siv-dev/client-work/"] path = ~/siv-dev/client-work/.gitconfig
That's it. Now all repos inside of
~/siv-dev/client-work/ will use the custom