Git Quick Tip: Using a Global Gitignore

Git Quick Tip: Using a Global Gitignore

Did you know Git supports a global .gitignore file that can be used across all of your local repositories?

Getting Started

To get started, let's create a file named ignore in the ~/.config/git folder. You may need to create this folder if it does not already exist.

mkdir -p ~/.config/git && touch ~/.config/git/ignore

In the file, we can add some patterns to ignore across all files.

# Ignore files generated by operating systems

Git should automatically load this file. The patterns in the global file are merged with any other .gitignore files in your repositories.

If you wanted to put the file in another location, you would need to update the Git configuration to point to the file. For example, if I had a ~/Code/ folder where I store all of my projects, I could create my file there: ~/Code/.gitignore_global. Then, I can run the following command to update my Git configuration.

git config --global core.excludesfile ~/Code/.gitignore_global

What Should I Add to My Global Gitignore?

What other types of files can be ignored globally? A lot of developers like to ignore the default editor/IDE folders like .vscode and .idea. This would depend on your project though, some projects commit some of the files in these folders.

You can also ignore package folders like node_modules and vendor for PHP Composer.

Generated files can also usually be ignored globally. These files usually exist in the build/ or dist/ folders.

Another great ignore to add is .env. These are used in projects of all types and usually contain sensitive information like API keys and passwords, so it's nice to have some extra protection to make sure you don't accidentally commit the file.

The global .gitignore can also support things specific to your workflow. For example, when working in JetBrains IDEs, I love using scratch files to store notes and pseudo code I might have when coding. If I am using something like Vim or VSCode though, then my scratch files aren't supported. So instead, I add .scratch/ to me global .gitignore and then I can create markdown files or whatever else I might want there without it being committed. I also use .http to store JetBrains HTTP requests if I don't want them committed to the project. Read my post about the PhpStorm HTTP client and requests to learn more.

Gitignore Example

Below is my current global .gitignore:

# OS files

# Editor Files

# Logs

# Generated files

# Dependencies

# Sensitive files

# Scratch files

# PhpStorm HTTP Requests


Using a global .gitignore is helpful to make sure you aren't committing files that shouldn't be committed. Most of these items should already be in the project's .gitignore, however, that might not always be the case.

Also, I don't like adding items to a project's .gitignore that don't apply to all developers, like my .http/ or .scratch. This is where a global .gitignore shines as it lets you add items relevant to your workflows.

For more information, you can refer to the GitHub documentation which has some great content including templates and links to the Git documentation.

Let me know in the comments if you have any other helpful items to add to the global .gitignore. I would love to hear about any custom workflows you might have that having the global ignore helps support. Thanks for reading!

Did you find this article valuable?

Support Sean Kegel by becoming a sponsor. Any amount is appreciated!