Using version control in your development workflow

I think every developer should use some form of version control (svn, mercurial or git).
I use git for all of my projects and have used mercurial / svn in the past, it saves me a lot of headaches in the projects in the long run.

There are great ways to use git for bigger projects, like the git branching workflow:
gitflow-orig-diagram

 

But for the smaller projects this is too complicated.
For the smaller projets I would recommend just using a development branch and a release branch.

checkout the release branch on the client’s webserver (first make sure your client isn’t hosted on a shared hosting service..)
checkout the development branch on your development server, make all the necessary changes, and have the client check the changes on the development server.
If all is well merge the development branch into the release branch, and pull the changes on the release server, and your done.

If any problems arise you can check the commits for any errors, and revert them or add necessary updates and merge them again.
I always keep a wiki page on github as well for all my projects, this is always usefull if a customer calls you 6 months later.