Pragmatic Guide to Git Book Review
With the release of Pragmatic Guide to Git, Pragmatic Bookshelf has launched a new line of books designed to transfer reference information as quickly as possible from the author to the reader. Does this 'just the facts' approach work? Read on to find out.
Written by Travis Swicegood, author of the nearly two-year old Pragmatic Version Control Using Git, Pragmatic Guide to Git is akin to a 'Nutshell' second edition of sorts. As the initial member of the Pragmatic Guide series, the book follows a structured per task format of description, command reference and related references. This 'cut to the chase' style will likely appeal to agile developers who are already trained in refining the essence of a task into a structured, rudimentary definition. This new book series also minimizes the static-to-noise ratio by focusing on describing answers without unnecessary pages of back explanation. The task-oriented two-page spread approach reminds me of a similar layout used by Mike Murach and Associates, of which I'm a big fan. However, this design aesthetic is most effective in the printed or PDF versions of the book, since the concept of an absolute page in the world of reflowing Epub or Mobi formats is non-existent.
The book consists of 44 tasks categorized into 8 sections. For example, the 4 tasks in the Getting Started section help those new to Git get the distributed version control system installed, configured and set up with a new or copy of an existing repository. Committing and sharing changes as well as moving and deleting files in Git is covered in the next section. Branches and Tags shows how to create, switch, view, merge and delete branches and tag milestone. This is followed by working with a remote repository (adding, removing, retrieving and submitting changes). Due to the importance and the depth of understanding needed when working with branches and tags, the concepts are expanded in the section entitled Branches and Merging Revisited that covers such tasks as conflict resolution, cherry-picking commits and moving branches. The next two sections show how to work with a repository's history (viewing and filtering logs, generating change statistics, etc.) and fixing commits via reverting, resetting or erasing commits. The last section is a collection of 4 miscellaneous tasks that cover repository export, Git housekeeping, using git-svn to sync with existing Subversion repositories, and concluding with setting up a bare repository such as those created by services like GitHub and Gitorious.
Having already written a more comprehensive book on Git, the author had a volume of content to harvest for the guide. Considering the challenges of distilling the essential elements without abstracting too much of the understanding for why things work in Git the way they do, Travis has done a good job with re-configuring his knowledge into this new Pragmatic format.
Some potential readers may be put off by the book's page count to cover price ratio. But after considering the time cost of the 'free' alternative (spending time querying Google for a mishmash of results while trying to avoid link bait), the asking price is rather reasonable.
Incidentally, for those who prefer learning via video instruction, the Gitcast screencast series is an excellent way to see most of the book's topics in action, and will help reinforce the quick explanations that Travis has written for each task.