Git Essentials(Second Edition)
上QQ阅读APP看书,第一时间看更新

Foreword

The book you are holding in your hands is not an ordinary one; drop it if you are not willing to start an exciting, lifelong, challenging, and, sometimes, demanding journey. Ferdinando’s Git Essentials is definitely not in the learn-git-in-2-days-without-effort realm.

In fact, there are two approaches to Git.

Either you might be a typical, traditional--and, probably, slightly bored--developer, whose daily activities are more led by deadlines to meet and tasks to accomplish than by passion and challenges. Should this be the case, no worries; just ignore this book and rather ask your fellow to teach you the bare minimum of the Git commands (clone, checkout, commit, and merge) to let you survive in the future, and rely on Google or Stack Overflow in the case of needs.

Or chances are that you are a passionate, ardent, and pragmatic programmer, eagerly and humbly willing to question all your beliefs.

In this case, you will be excited to learn that Git is only outwardly just a very efficient and powerful tool for source code versioning; it is, in fact, a breaking point in the history of computer science, and this book is the perfect companion to discover this side of it.

I’ve got a few examples of similar breaking points in the history of IT. Besides the World Wide Web, as the most trivial example, I can think of Unix, with its “Do one thing and do it well” philosophy and infinitely composable commands, Kent Beck’s TDD or Emacs, with its astonishing and endless extension possibilities, and Docker, which made infrastructure-as-code available to the masses and made the DevOps movement explode.

Meet one of the preceding technologies or ideas and be sure that nothing in your developer’s life can be the same anymore.

I believe that the same is true for Git, which you are going to learn with the help of this book.

Differently from most other versioning systems, Git builds its design on the core idea that the development activity is inherently a communication and collaboration exercise. Of course, you might decide to use Git just as Subversion or TFS on steroids, but you would miss its beauty--Git builds on some very simple, yet powerful, concepts that enable developers to build scalable and collaborative networks.

Git belongs to the core pillars of the open source movement: Richard Stallman, Eric S. Raymond, and other giants who provided the ideological foundation. The Free Software Foundation and licenses such as the GPL granted the needed legal authority. GNU and Linux are the very concrete and working implementations of those ideas and Git, with its social concepts in its DNA, is the fourth pillar--it is the very tool that enabled the community to build networks such as GitHub, which made the open source successful on a global scale.

So, if you are a passionate programmer and want to enter the social dimension of Git and the universe that revolves around it, learning the bare commands may be reductive. You may need to capture the deep meaning of what a Fork is, of how to manage a Pull Request, and of what a Rebase is, besides its technicalities.

And to achieve this, you may need the expert guide of someone as passionate as you are.

I believe that’s exactly the value of the book you are reading--it is neither a replacement for the Git’s man pages nor a quick shortcut for learning Git without effort. On the contrary, being a vast tutorial that forces you to get your hands dirty, it will carry you along a deep, not necessarily easy but always exciting, journey.

This second edition completes the only possible topic that was not covered in the first edition--it bravely takes you deep into the heart of Git’s internals so that the moment you reemerge, you can reason about all the imaginable weird behaviors even while working with superficial commands.

As for the first edition, I must confirm that Git Essentials is a book that values code much more than words.

Crack open a shell, get ready, and enjoy your journey!

 

Arialdo Martini
Solution Architect with Aduno Gruppe