Git global ignores
I don’t know about you, but for me, using git is so low-friction that I use it basically for everything where I may need a powerful undo button. In other words, I don’t use it only for team software development projects.
For example, I’ve frequently used it in the past to keep track of the modifications I make to an article I work on for few days. God knows I write a lot of these. There’s a reason I called this blog Programblings ;-)
To be honest, I’m using git as I write even this short article.
I also use it for trivial one evening coding projects. As soon as I spend more than an hour on code, whatever it is, I’ll usually create a local git repo for it.
One of the annoying things I realized when creating repositories more and more often, is that I always ended up ignoring the same files. Over and over again. Boring.
Fortunately for me, git can be configured to take into consideration a global ignore file. Heck, I can even create a system-wide ignore file if I want (check out git config’s doc for more info).
Configure your personal ignore file
I like to stick to conventions so I call my file .gitignore, and I put it in my home directory. But that’s up to you, really.
git config --global core.excludesfile ~/.gitignore
Note that there’s one little gotcha to be aware of. If you prefer to edit the .gitconfig file directly (or if you use a weird shell), git expects an absolute path. In the example above, bash converted the ~ shorthand to my home directory.
Now I just add ignore globs to it like any other project level (directory level, really) git ignore file.
echo .DS_Store >> ~/.gitignore
Once I’ve ignored all my favorite useless files, I can get cracking and never worry about them again.
I still have to ignore files
When I create a new repository on which people may actually contribute, I’ll still create a proper ignore file, however. Otherwise I’d convey the message that I consider contributors as slaves who only deserve the boring work of creating ignore files. Since I’m pure of heart, that’s not how I roll.