As is the case with the operas of certain composers, the Git software configuration management system is an acquired taste. Its command names are confusing, its interface is inconsistent, and its documentation is often terse and cryptic. However, Git is also extremely powerful, efficient, and responsive. All that’s needed to appreciate Git’s beauty is a book that, like a good opera companion, provides a gentle introduction, while also highlighting the work’s best parts. Pro Git, now in its second edition, succeeds in this difficult task with gusto.
The book covers all that’s required to work with Git: setting up a repository, branching, managing servers, working in teams, utilizing the GitHub repository service, advanced operations, customization, and working with other version management systems. The writers seem to assume some basic familiarity with the concept of software configuration management (or version control) systems because they approach the subject from the viewpoint of a Git user, rather than introducing readers to the idea of tracking software changes. The writing is clear, and numerous detailed (though somewhat grainy) images are used illustrate complex workflow and branching concepts. The tone of the text is always authoritative, which is not surprising, given that the book’s two authors are intimately associated with Git: Scott Chacon is a cofounder and CIO of GitHub, and Ben Straub is a longtime contributor to libgit2, the portable C implementation of Git’s core methods.
Both beginners and seasoned users will benefit from this book. Although I’ve been using Git daily for more than three years, I learned many new things by reading the book. Here is a (long) list of the most valuable ones: you can use git diff to see what you’re about to commit; git diff to verify you haven’t introduced any whitespace errors; git add -i to launch an interactive staging interface; git commit amend with a modified staging area to change a commit’s contents; git rerere to reuse a past conflict resolution; git archive to produce a tar or zip snapshot; git grep to search through the working tree’s files; git log -S to search for code changed in commits; and git log -L to see how a function was changed. I also appreciated the lucid explanation of the git reset and git bisect commands, and the details given regarding how credentials are stored.
The chapter covering the GitHub repository service, which is new to this edition, contains al of the information needed to use Git with it. Some things I learned from it were the use of task lists, how to enter emojis (smiley ideograms) in messages, and the special CONTRIBUTING file, which allows you to display instructions for contributing to a project when users initiate a pull request.
If you use Git, you can save yourself a lot of anguish, misery, and uncertainty by reading this book. Even better, you can boost your productivity as a developer in ways that are only possible with Git.
More reviews about this item: Amazon