Once I was contributing to a research project involving a database, a public web server, and lots of Python code. One day the hard disk of the server crashed, wiping out everything. We tried to rebuild the service from files that were scattered on different peoples’ computers—and failed. The project never came to life again. We would have needed a time machine to restore the previous state of the project. Ironically, when I was working on another web-database project one year later, history repeated itself. The disk on the server crashed again. This time, we did have a time machine. We could take all code and data like it had been before the crash. Although we had to configure a few things manually, the site was soon running again. Now you may wonder how we could recover the old code. Or, more precisely: “How did you build yourself that time machine?” Our time machine is called Version Control (see Figure 12-1). In this chapter we will see what Version Control is and how to use it.