I've been using svn since my beginnings, learned to love it and to hate it, and how to work around it, but I've always looked at it as the de-facto tool. Sure, I knew there were other versioning systems out there, but never had the time to look what they have to offer. That's until last night, here is what I found out about git, in contrast with what I knew about svn.
Before I get started, let me remind you, these findings are just after a few hours, so it's more a newbie point of view, and I might have misunderstood things. Also, like most of you out there, I will be using a GUI front-end for most of my time, after a quick research, I found out the great looking mac app Tower.
Repository
In svn, the working copy is just a copy of what you're working on, and that's about it.
As you know, svn works on a per folder basis, and this can cause lots of trouble when moving folders around (refactoring anyone?), and you can easily corupt stuff inside.
With git, you get the full repository right here, in your working copy. No more round trips to the server for every little thing (or heavy stuff). Also, the full history is there too. So, a working copy in git is actually a full blown repository, and git will sync all the changes with your main repository (or any others). I won't tell you how many times I dreamed about this in svn.
So, in git, commit, update, revert are working locally, and then there are 3 operations to synchronize with remote repositories (fetch, pull, push). Of course, that means you can also work with more than one remote repository.
Staging area
In svn, you work, work, work, and then you have to think, from all the changed files which ones have to go into your commit.
With git you have this intermediary place called the staging area, where you can build up to your commit, little by little.
Stashing
Imagine you're in the middle of something, and then you get this high priority bug fix that you have to fix asap. With git you can take all your changes made so far, stash them away and start with a clean version and fix your bug. After you've commited the bug fix, you can merge back the stashed changes, and you're back where you left of.
It's fast...
Because everything is local, right in your folder, commits, updates, changing branches, moving from tags, etc., are going fast..., really fast!
Much more
Of course, there are much more cool stuff, but you can find then on your own. I just wanted to share with you a bit of my enthusiasm. I might add more things later, as I'll be using it on my project.
