Having first used CVS as a source version control more than a decade ago, I remember how easy it was to make the transition to using Subversion, which I thought was all I needed in a source version control tool. Then came Git, Bazaar, and Mercurial, the new kids on the block. I looked at them briefly, but initially, I couldn't see what advantage they could really have for me as a programmer over Subversion, as I was working mostly on my own projects. However, it became more and more evident that to facilitate collaboration, I would have to become much more familiar with these new tools. Very soon it seemed, Git became the first choice and I started using it in earnest. I remember feeling that the tutorials I read seemed needlessly complicated, spending too much time on what I felt were unnecessary details. When I read the first draft of Git Essentials, my first thought was, "This is the book I wish I had when I first learned about Git."
Instead of jumping right away into detailed descriptions of the intricacies of dealing with multiple copies of some software shared by multiple programmers—one of the strengths of distributed source version control software such as Git—Ferdinando Santacroce, the author of Git Essentials, took a different approach, focusing on you first as a potentially lone programmer wishing to use Git.
After going through the basics of installing Git in the first chapter, Ferdinando devotes the following chapter to using it locally, that is, without working with an external repository. This allows you to focus on the basics of Git without the unnecessary complication of dealing with the added concept of an external repository. This is not the way I have seen Git being introduced usually—yet, it is definitely the right way. From this point on, there is a logical progression with important concepts highlighted in a progressive manner. Ferdinando postpones the added complication of working with a remote repository until Chapter 3, Git Fundamentals – Working Remotely, using GitHub as an example. Since GitHub has become the most widely used Git repository in the world, this choice is very logical. Yet, the concepts explained in this chapter are just as applicable to other similar sites, such as GitLab or Bitbucket.
There is so much that could be covered when describing how to use Git that it can be a challenge to focus on the essentials, as the title of the book implies. However, Ferdinando has achieved to do just that by making a very judicious use of references to easily accessible external references. The basic topics are well-presented, and pointers to find out more information are added just at the right time. My favorite example of this, which is something I learned from Ferdinando, is to write commit messages before writing the code. Ferdinando mentions this in Chapter 5, Obtaining the Most – Good Commits and Workflows, which briefly explains the rationale and includes a reference to a detailed blog post written by Arialdo Martini on this topic. Current Subversion users, who are considering starting using Git, will find Chapter 6, Migrating to Git, particularly useful.
Git Essentials is definitely not your traditional dry technical document. Ferdinando's writing style is not only that of a friendly conversation with a friend—one who is passionate about his or her favorite topic and eager to help you learn it—but also that of a friend who knows how to restrain his or her enthusiasm and teach you just enough to enable you to do what you need to do. He does this while giving you useful pointers in case you want to know more.
Dr. André Roberge
Former President and Vice-Chancellor of Université Sainte-Anne