Logo Devoh

Global .gitignore

Git is really good at keeping a perfect history of the changes to your files. That's a great quality to have when those files are code, but not so great when a bit of application configuration slips in.

Here are some things you probably don't want in version control:

  • API keys and secret tokens for external services
  • environment configuration unique to a developer's particular computer
  • editor-specific files (e.g. *.swp Vim swap files)
  • OS-specific files (e.g. .DS_Store on OS X)

It's common to add these sorts of things to the project's .gitignore file, but I often find I'm ignoring the same files over and over again as I start on new projects. This is where the global .gitignore comes in. It acts just like the per-project .gitignore files, but it's automatically picked up by every repository.

Do this right now:

touch ~/.gitignore
git config --global core.excludesfile ~/.gitignore

No really… I'll wait.

Now, the .gitignore file in your home directory acts just like the .gitignore files you're used to in the repositories, but it applies equally to all your repos. I wish Git enabled this out of the box, because I think the feature would get a lot more use if that were the case.

My ~/.gitignore

These are some of the entries in my global .gitignore that you might want to add to yours:

# Mac OS X hidden files

# Vim swap files

# Pow and Powder config

# RVM and rbenv

# Bundler binstubs

Additional Resources

  • The gitignore(5) man page has some details on the pattern format and globbing used in .gitignore files.
  • GitHub has a nice writeup on ignoring files, which also includes a useful bit about excluding files from individual repos.

More to Come

I want to start to documenting the development practices that I find useful, in the hope that they might also be useful to you. It's something I've been thinking about for a while now, and what better time to start then the beginning of a new year? This is the first in what I hope will be a series of similar posts with the tips and tricks that have become habits for me.