11 September 2023
why I need a global gitignore file?
On a day to day basis, I work on some tools that requires project specific configuration. Two of the tools that I use on a daily basis with git repositories are:
direnv ==> I use
direnvto load project specific environment variables when I
cdinto a project directory with a
.envrcfile. This way I don't have to manage environment variables manually.
Helix ==> This is the editor of my choice these days and I use it extensively. With the support of
workspacesin helix, you can create a project specific helix configuration (./helix/config.toml) and make changes to your theme, keybindings etc. without affecting global configuration (
In all those projects, it's useful to have a global .gitignore file that applies to all repositories. This way I'll be able to ignore certain file patterns in all of my git repo and maintain a clean
git status output. In this post, I'll explain how to create a global gitignore file.
How to add global gitignore?
First you will have to select where do you want to store your global gitignore file and what name you want to give to that file. In my case, I have created a file called
.gitignore_global in my home directory.
You can use the following command to create the file:
After creating the file, you need to tell git to use this global gitignore file for all repositories. You can do this by setting the
core.excludesfile configuration variable:
git config --global core.excludesfile ~/.gitignore_global
After executing the above command, you'll see that git added an entry for core.excludesfile in your global git configuration:
[core] excludesfile = /home/<user>/.gitignore_global
Here's how my
~/.gitignore_global looks like for me.
$ cat ~/.gitignore_global .envrc .helix/config.toml
force adding files that are being ignored
Note: Sometimes on the personal project I also want to push my helix configuration to the repository to keep the config in sync across devices. In that case I can force add the helix config file. Let's look at man page of git add to see how we can force add files that are ignored via gitignore(local or global).
$ man git-add -f, --force Allow adding otherwise ignored files.
Now we know that we can force add files that are ignored via gitignore files by using
git add -f <file>.
$ git add --force .helix/config.toml $ git status --short A .helix/config.toml
Now you see that the config was added even after gitignore ignoring it. If you changed your mind and if you don't want to add
.helix/config.toml anymore than you can restore that using the command
git restore --staged .helix/config.toml