My first experience of a VCS was Subversion. A migration to Git was always on the cards, and then when the SVN server crashed, it became a matter of supreme urgency and we switched to git literally overnight.
Luckily, by the time this happened, I had already watched Linus' famous presentation on Git, so I was expecting it to be substantially different from SVN and already had the attitude of "If it seems like Git is being stupid, it's because I'm expecting it to work like SVN. It was written by very clever people, so the problem is far more likely to be with me than with it." - This attitude helps tremendously when migrating to git.
There are people who say that git is just a fad and that it's nothing more than a faster SVN with the ability to work offline. Having used both, I must disagree: You might just as well say that a car is just a faster, easier-to-refuel version of a steam engine.
There's a multitude of stuff I do literally on a daily basis that SVN would either just not be able to do at all, or would be incredibly slow and painful to do. Interactively rebase a branch to squash together commits that I only made because I was pulled away to another branch and needed to commit before switching, for instance. Creating multiple local repos for my own use, for another.
I also find it far more powerful for examing history, finding specific commits, keeping projects seperate but up-to-date, etc. etc.
I have to go back to SVN every now and again, and it's frankly like switching from a Rolls Royce to a horse: Primitive and tends to crap on things.
In terms of specific setup matters, Below is my typical settings. 'gita' - an ascii equivalent of gitk - is about the only thing likely to be new to anyone who does much with git.
[user] name = Dominic Humphries email = firstname.lastname@example.org [color] diff = auto status = auto branch = auto [alias] st = status gita = log --graph --abbrev-commit --pretty=oneline --all ci = commit co = checkout cp = cherry-pick br = branch dn = diff --name-only dc = diff --cached unstage = reset HEAD [push] default = tracking
TODO: interactive rebase, reset head, stat