Global .gitignore

From time to time I see code editors or IDEs project settings pushed to GitHub repositiories. Sometimes they're put there intentionally - and that's fine. But more often they're not. So how can we preven't ourselves from putting all IDEs and editors into every projects .gitignore?

There are certain files created by particular code editors, IDEs, operating systems, etc., that do not belong in a repository. But adding system-specific files to the repo's .gitignore is considered a poor practice. This file should only exclude files and directories that are a part of the package that should not be versioned (such as the node_modules directory) as well as files that are generated (and regenerated) as artifacts of a build process.

All other files should be in your own global gitignore file.

The solution is actually pretty easy. Create a file called .gitignore in your home directory (also read note below) and add any filepath patterns you want to ignore. Next, tell git where your global gitignore file is.

Note: The specific name and path you choose aren't important as long as you configure git to find it. You could substitute .config/git/ignore for .gitignore file in your home directory, if you prefer.

echo ".vs_code" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global

Mine is:

➜ cat ~/.gitignore_global 
# IDEs & Editors
.idea
.vscode
.project
outputs/
*.env
dump.rdb
*.code-workspace

.favorites.json
.pabotsuitenames
pip-wheel-metadata/*

venv/

Moreover, if you want to exclude files on a per-repo basis without modifying .gitignore, you can directly edit .git/info/exclude in the repo. Nothing under the local .git directory is committed.

Now, it doesn't matter if I work with VS Code or JetBrains IDEs, they're configurations will be exluded from project repository on a higher level.

For more details, jump to related documentation: Configuring ignored files for a single repository

Also, you might find useful ignore patterns for your projects directly on GitHub.