Book Review: Git for Humans
Posted on by Bob Matyas
As someone who made websites back in the early 2000s, the changes in the modern web development workflow are ather astonishing. Notepad (or some other plain text editor) has been replaced with full featured editors like Visual Studio Code, we make use of various processors and bundlers, and perhaps most notably, we use Git for version control and deploying our projects. As some have rightly pointed out, this has added a layer of complexity to the web development workflow and added a long list of qualifications on top of familiarity with HTML, CSS, and JavaScript to what the typical front-end developer is expected to know.
The use of Git for version control is perhaps the biggest change. Gone are the days of renaming files in order to keep track of them (about.html, about-new.html) or using rather primitive systems like renaming directories (client_site.1.1, client_site.1.0). Unfortunately, while familiarity with Git and comfort with its use is pretty much required, relatively few people are willing to acknowledge the fact that Git is complicated. Sure, there are countless tutorials online, a handful of books (for example ProGit or the GitHub focused Introducing GitHub: A Non-Technical Guide), and while all have their own strengths, learning Git can still be hard.
One book that I discovered that doesn’t shy away from acknowledging the difficulty and complexity of Git is David Demaree’s Git for Humans. Published by A Book Apart, Git for Humans provides a great introduction to Git. It explains why it came about with a brief look at its history and development, the benefits of using it, and how to get started. For folks like myself who are doing front-end web development, I found this book to be particularly useful because all of the examples were very relatable. For instance, Demaree’s scenarios involve things like updating the contact information on a website. The text will walk you through how to create a branch, pull in changes from master if necessary, and push the changes back to master. The emphasis on realistic scenarios makes it all easier to digest and less intimidating.
At the same time, Git for Humans does provides a solid foundation for working with Git. Demaree emphasizes the use of the command line over graphical clients, explaining that the command line usage will be consistent across platforms. Naturally, there is a good amount of detail about the most frequently used Git commands. Dreaded scenarios – such as merge conflicts – are explained in plain language which really goes a long way towards removing the barriers to using Git. There’s also a nice discussion on writing solid commit messages. This is particularly helpful given that most readers will likely be using Git to collaborate with others. Like the rest of the book, it also highlights one of the advantages to using Git – it creates an easy to follow log of changes to a project over time. At the conclusion of the book, there’s a helpful overview of commands and suggestions for additional reading.
I highly recommend Git for Humans for anyone getting into modern web development. It’s a relatively quick read that offers an invaluable introduction to an important part of the development workflow. Moreover, like the rest of the A Book Apart titles, Git for Humans features a sharp layout and plain language. It definitely has a level of approachability that other books on Git lack.