Git has a bit of a reputation as being difficult to learn and even more difficult to master. Because it's such a powerful and flexible tool, it is easy for users to make hard-to-correct mistakes. When working with others, it becomes even easier to get out of sorts. Git for Teams aims to solve that problem by not only teaching the reader how to use Git, but how to use teams.
The first three chapters barely discuss Git at all. They are written for CTOs, project managers, and technical leads. The focus is on understanding workflow options and deciding what works best for the team. These decisions aren't just limited to figuring out what branching and merging strategy to use. Westby discusses structuring meetings, cultivating team empathy, and project governance. Considerations for both open source and closed projects are discussed, making this valuable for all audiences.
Git begins to appear earnestly in chapter 3, when Westby discusses different branching strategies. She offers real-world examples of "mainline," "branch-per-feature," and "scheduled deployment" strategies. Git commands don't appear until chapter 4 with some workflow examples. Sticking with the "not everything has to be technical" theme, some of the examples include book writing and the Git for Knitters project.
Chapter 5 focuses on giving the novice solo Git user an introduction to the Git command line interface. Chapter 6 advances to more complicated examples that involve undoing what has already been done. Westby emphasizes drawing diagrams while practicing the exerciser in order to develop a deeper understanding of how the examples work. In the book, Figure 6-3 provides an excellent flow chart for determining how a commit (or several!) should be removed.
In Chapters 7 and 8, the team aspects and the Git lessons merge into the ultimate goal of the book. Building confidence in new users, defining team norms, and conducting code reviews all feature prominently. Part 2 concludes in Chapter 9 with a discussion of finding and fixing bugs. This includes using stashes and the `Git bisect` command.
Part 3 contains introductions to three code hosting services: GitHub, BitBucket, and GitLab. Three appendices provide Git-relevant instructions. Appendix B describes upgrading Git. Appendix C is a useful tutorial on Git configuration. Appendix D gives a brief introduction to SSH for those who are unfamiliar. But the best of the appendices may be Appendix A, which offers several recipes for butter tarts (yes, really).
In reading Git for Teams, I experienced two primary thoughts: "I can use this example at work!" and "I want to hug this book." I love the focus on building the team as part of the process and not simply assuming that knowledge of Git will make Git work. Westby begins each chapter with the learning goals. She's candid in her opinions, but makes it clear that her preferred procedures aren't the one true way. In all, this is a terrific book for anyone who uses Git or manages people who use Git.