Global gitignore
11 September, 2023 - Tags: git
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
direnv
to load project specific environment variables when Icd
into a project directory with a.envrc
file. 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
workspaces
in helix, you can create a project specific helix configuration (./helix/config.toml) and make changes to your theme, keybindings etc. without affecting global configuration (~/.config/helix/config.toml
).
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:
touch ~/.gitignore_global
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>
.
To add .helix/config.toml
$ 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