Revision control systems are a way to not only travel back in time, but to see what has changed at various points in your timeline. They are also called versioning or version control systems, which is actually a more technically accurate name. Such a system allows you to maintain a central repository of files in a project, and to keep track of changes to those files, as well as the reason for those changes. Some revision control systems allow more than one developer to work concurrently on the same project, or even the same file.
Revision control systems are essential to modern software development efforts, but they are also useful in many other areas, such as writing documentation, tracking system configurations (e.g., /etc), and even writing books. We kept this book under revision control using Subversion while writing it.
Some of the useful features of revision control systems include:
Making it very difficult to lose code, especially when the repository is properly backed up.
Facilitating change control practices, and encourage documenting why a change is being made.
Allowing people in multiple locations to work together on a project, and to keep up with others’ changes, without losing data by saving on top of each other.
Allowing one person to work from multiple locations over time without losing work or stepping on changes made at other locations.
Allowing you to back out changes easily or to see exactly what has changed between one revision and another ...