官术网_书友最值得收藏!

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

主站蜘蛛池模板: 武冈市| 波密县| 怀来县| 塔城市| 尉氏县| 普格县| 邮箱| 阜阳市| 布尔津县| 漳浦县| 新龙县| 柘荣县| 信丰县| 百色市| 呈贡县| 镇宁| 二手房| 陈巴尔虎旗| 阿图什市| 台东县| 班玛县| 米易县| 逊克县| 盱眙县| 丽水市| 高碑店市| 垣曲县| 宣武区| 通道| 宁陵县| 霍山县| 中西区| 郴州市| 金门县| 察雅县| 鹤山市| 邹城市| 册亨县| 辉县市| 房山区| 樟树市|