At the time of Git’s inception, the Linux kernel development had used the proprietary version control system BitKeeper for several years, with great success. But there was one problem: some Linux developers took exception with the proprietary nature of their version control system and what ensued was an epic flame war. Out of this conflict, the free BitKeeper license for Linux developers was revoked, and Git was born. Linus Torvalds himself took two weeks off from working on Linux, originally to search for a replacement for BitKeeper. Failing to find any that met his criteria, he instead wrote the first, very rudimentary version of what we now call Git: tiny programs cobbled together with shell scripts, Unix style. An ironic twist is that the distributed nature of Git was implemented using rsync, a tool which in turn had been developed by the very Linux developer who triggered the fallout with BitKeeper.
As to myself, I was fascinated by the simplicity of Git’s data structures and got drawn in early on, first by working on Git’s portability, then on more and more general improvements, including the invention of the “interactive rebase” (sorry for the name!), and ultimately maintaining the Windows port of Git. For the past 10 years, I used Git almost daily as a life science researcher, as part of different teams ranging from being the designated coder in interdisciplinary projects to leading highly distributed Open Source projects.
My first contact with Emma was at the Git Merge conference in Paris celebrating Git’s 10th birthday, where she gave a compelling talk titled “Teaching People Git”. This talk left quite the impression on me, reflecting Emma’s broad skill set and experience in teaching and project management.
Reading Git for Teams, I learned a lot from its unique perspective that emphasizes how Git can facilitate teamwork. It sounds so simple, but all those years, I had been focusing on technical details, and I had been teaching Git in what must be one of the most frustrating ways: from the ground up. By focusing on workflows and interactions between roles, Git for Teams guides you, the reader, to understand your exact needs within your particular projects. Equipped with this knowledge, you will then learn the fun part: how to use Git to best support your needs.
Just like her talk, Emma’s writing style is very enjoyable, making this book both educative and fun to read. It gave me valuable insights into my daily work. Whatever your role in your daily work, let this book be more than just a manual. Explore the different ways teams can work together, the ways a modern version control system can help moving projects forward, and let it inspire you to unleash the full power of Git to support you in what you want to do.