I think you need to read up on Source Control Management (SCM) and Version Control Systems (VCS).
I would recommend setting up a git or Subversion repository and adding the code initially to trunk and then branching it off to the number of branches (versions you'll be working on).
The idea of different versions is this:
You're developing your code and have it in your SCM's
trunk (or otherwise known as a
HEAD). At some point you consider the code stable enough for a release. You therefore create a
tag (let's call it version
1.0). You cannot (should not) make changes to tags -- they're only there as a marker in time for you. If you have a client who has version
1.0 and reports bugs which you would like to fix, you create a
branch based on a copy of your
tag. The produced version would (normally) be 1.x (
1.2, etc). When you're done with your fixes, you tag again and release the new version.
Usually, most of the development happens on your
When you are ready with certain fixes, or know that certain fixes have already been applied to your
trunk, you can merge these changes to other branches, if necessary.