## A couple of definitions

When you add changes with the git add command you are adding to the index. What you add from is called the working tree, this is the current state of the files in your file system.

Have you ever tried to add a new feature to, or change (refactor) an existing part of, a piece of software (or improve a section of a document) and eventually realised that you made it worse and you aren’t sure how to get back to where you started? Perhaps, to avoid such a situation, you now have cluttered directories filled with my-code-v1, my-code-v2-plus-that-other-feature etc., etc. and you’re not quite sure which one does what you want. Version control will help you to keep a log of your changes as well as snapshots of the code as you apply them; it will also allow you to collaborate far more easily but, for now, we will focus on a single editor and a linear history.