The differences
Centralized vs. Distributed (VCS vs. DVCS)
The key difference is that Git is decentralized. Imagine you are a developer on the road, you develop on your laptop and you want to have source control so that you can go back 3 hours or commit your work.
With Subversion and CVS, you have a Problem: The SVN Repository may be in a location you can’t reach (in your company, and you don’t have internet at the moment), you cannot commit. If you want to make a copy of your code, you have to literally copy/paste it.
With Git, you do not have this problem. Your local copy is a repository, and you can commit to it and get all benefits of source control. When you regain connectivity to the main repository, you can push to it.
This looks good at first, but just keep in mind the added complexity to this approach.
This is what I really like about Git, but it was always the hardest part to teach everyone, that there are more repositories than just one. Git is not the only decentralized VCS, next are Mercurial, Bazzar and others.
Branches and tags
Branching in SVN and CVS was always painful. In many cases the development (committing) had to be stopped for some time before the merge was finished. SVN nor CVS does not have support for branches, it only creates new directory. That can lead to loosing history and the repository size increases dramatically.
On the other hand Git has much better support for branching. You can create branch from any point in history, you can switch anytime you want and it will take a second, not minutes as on SVN with bigger repository.
In SVN most teams were using branches only occasionally. Git is allowing you to create a branch for every feature and will not make it difficult for you to merge it back to master branch (trunk).
What is Distributed VCS?
These systems do not necessarily rely on a central server to store all the versions of a project’s files. Instead, every developer “clones” a copy of a repository and has the full history of the project on their own hard drive. This copy (or “clone”) has all of the metadata of the original.