I’ve recently begun using Git, which is a pretty spiffy version control system. In case you’re not familiar with the term: A version control system is a piece of software that programmers use to keep track of different versions of the files they are working on.
If you’ve ever had a folder with files in it like “History Project.doc” “History Project–Old.doc” and “History Project–2010-06-02.doc”, you’ve tried to solve the same problem version control solves–you want to be able to make big changes to a file, but you want to be able to go back to the old version just in case something goes pear shaped.
Version control systems automate this process, keeping project directories a lot cleaner. They are also virtually essential for collaborating on software projects, because each change to each file is saved (along with the name of the person who made the change) and is reversible. You can even split a project into multiple branches and merge the branches back together.
The only downside is that version control systems work best with plain text files. I happen to prefer plain text–they’re are small, easily transformed, and readable on every computer with no additional software–but you can’t use text files for everything. Version control still works with more complex file types, but you lose some of the niftier features, like diffs (which show you exactly what changed between one version of a file and another). Still, version control is great for a lot of projects, especially programming, which is all text files anyways.
There’s a great guide to using version control over at Better Explained, which also explains how to use distributed version control systems (like Git). Now that I’ve got a loose grasp on how Git works, I plan to use it for all my programming projects.