After having fought various version control systems over the decades, git is a breath of fresh air. Git is a system that is optimized for independent development, where branching and merging are the rule, rather than the exception. Git also provides a compact complete history of the entire project for every repository: compact enough that the current checkout for the linux kernel is twice the size of the entire 2.6 history! Git encourages proper development processes, and supports legacy centralized modes of operation as well as distributed development and tiered acceptance. Git plays well with others, having the ability to import and export CVS and SVN and others. My only complaint about git is "why wasn't it around ten years earlier - it would have saved me so many headaches!".
I use a lot of different SCMS's these days. Git is my current default. It has some problems; it is quite arcane, and it doesn't work well with Windows. Nonetheless, it is fast and fluid, and supports distributed work extremely well. In situations where the culture and technology permits and a bit of learning curve is OK, Git is a great piece of software.
Really. When most people think about their SCM/VCS it's usually in negative terms. 'Why can't subversion do abc?' or 'why does CVS suck?!. With Git I've found myself less worried about how to track my code leaving me more time to actually hack away. While I do agree that those coming from the CVS/SVN world (as I did) do have a learning curve, it is well worth the effort. Once you get over the curve you'll wonder why all SCM/VCS's are not as great as Git.
Git would be on the podium in a "Scariest Software Ever" contest. That is, until you learn the basics, after which you realize it's extremely unbelievably easy to use.
I have to use MKS Integrity at the office, and dealing with this unstable, broken, bloated beast with its cumbersome and deeply flawed workflow makes me cry every time I think about "git commit -a".
A few highlights about git: Distribution. Speed. Offline work. Atomic commits. No hassle with individual files, as it tracks content. Easy branching. Even easier merging. Merge tracking. Command line. Various GUIs. Freedom. Work alone? Fine. Want to setup a central repo? Fine. You can do whatever you want.
Brutally steep learning curve.
Command line let me count the ways I can shoot myself in the foot. And head.
And there too.
Is the idea to have a version system which can't be used if you're an incompetent developer? Are "they" just trying to keep programmers out?
And then you make it over the hump and "How did I manage to live without this?"
Another masterpiece from Linus Torvalds. It's the one and only version control system for me, and from the success of GitHub I can see I'm not alone. It takes some time to learn, but pushes the developer to the next level with possibilities to get back to any version, view the logs, diffs, branches. Never fear to experiment with your code again, git has got your back.