Pragmatic Version Control using Git
Pragmatic Bookshelf, 2008
Rating: 4/5 (very good)
Using a modern version control system likely means a choice between Git and Mercurial, which are way ahead of the previous generation (which includes the very popular Subversion). Git is becoming more and more widely used, with lots of open source projects switching to it. Even though quite easy to use for basic things, it takes some effort to learn to master all its features.
Pragmatic Version Control using Git provides most of the information needed, while also being a great starting point if you never used Git. It's written in a tutorial-like fashion, where each topic is covered by through explanations and focused examples (also available for download).
The first part covers Git configuration and very basic operations. The explanation is quite exhaustive, which is very important as it's fundamental to understand the philosophical differences between Git and other software: Subversion, for instance, works quite differently but many folks still try to use Git as if it was Subversion with another name: this is quite a pity, as Git offers much more power and flexibility. This difference is clear when you see that half of the book (90 pages) is only devoted to working with local files, which means that with Git you mostly (even only, in some cases) work locally (compared to Subversion where most of the work involves a remote repository).
The second part covers, besides some notions about how to work with remote repositories, the advanced topics (rewriting revision history, ...). One of the interesting parts is the one which explains how to migrate from, or even interoperate with, Subversion and CVS repositories: very useful if you're considering the switch to Git but you want it to be slow and without pain. Some useful notes on Gitosis (a Git repository manager) and other tools close the book.
A quick reference to everything Pragmatic Version Control using Git explains is available in appendix A, and a single-page cheat sheet you can detach from the book is also provided. These are really welcome, as finding a particular thing in a tutorial-like book like this can be quite boring.
This book is, all in all, a fine choice for learning Git. It might not be the best thing to use as a reference once you learned the topics, still it is acceptable even when used as such.