Per-directory git configuration Sometimes, you want different config files to be in action based on the directory you're in
Let’s jump right to the example from my practice. At my job, we have a self-hosted git solution where internal emails are used for authentication. At the same time, sometimes I need to work on open-source projects used by our company services, and want to send patches there signed off with my personal email.
There are multiple approaches to this.
The first is to have per-project git configurations. This works if you have just a few repos, and you need not to forget to reconfigure every new project you create or clone. The second approach is to override a commit’s author using environment variables or one-run configuration changes each time you do commit your changes. This is even more cumbersome.
The third  approach and easiest  one is  to use conditional  includes in
your  global config  file. Let’s  say all  your work-specific  repos are
located in ~/work directory. Then, you can have something like this in
your global ~/.gitconfig file:
[user]
name = John Doe
email = john.doe@gmail.com
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig.work
This way, if your git directory  is a subdirectory of ~/work, git will
include configuration from ~/.gitconfig.work,  in which you can easily
override your email (and any other configuration if you want), as simple
as that:
[user]
email = john.does@my-company.com
So now, when  you do commit in  your ~/work/super-secret-project, your
john.does@my-company.com will  be used  as an email,  while if  you do
that  in  ~/open-source/dependency your  regular  john.doe@gmail.com
will be used instead! Voila!
Happy hacking!