How to store a git config as part of the repository?

There are 3 supported scopes of .gitconfig file: --system, --global, --local. You can also create a custom configuration file, and include it in one of the supported files.

For your needs custom - is the right choice. Instead of writing your filter in .git/config you should save it in .gitconfig file in your repository root:

your-repo/
│
├── .git/
│   ├── config
│
├── .gitconfig
│

Create the .gitconfig with your filter and commit the changes. Then your colleagues will always keep it updated -- but they will have to include it manually. It is not possible to automatically include your custom configuration file through git alone, because it creates a security vulnerability.

To apply this configuration for a single repository, each user will need to run the following command in your-repo/:

git config --local include.path ../.gitconfig

Reference: https://git-scm.com/docs/git-config#_includes

Be careful not to store personal data in the custom .gitconfig, like user.*, keep those in your global .gitconfig.


You can not use .gitconfig file in a git repository by default, but you can link to it so the git config will be versioned.

You can link to it like that:

[include]
  path = ../.gitconfig

I have created a simple script gitconfig.sh which do it for you (much faster than copy) + simple .gitconfig file so if you want, take a look to this repo https://github.com/HoBi/dotfiles.


EDIT: I have deleted the file, but you can find it here https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

Tags:

Git