- Series: Version Control With Git
- Paperback: 456 pages
- Publisher: O'Reilly Media; 2 edition (August 27, 2012)
- Language: English
- ISBN-10: 1449316387
- ISBN-13: 978-1449316389
- Product Dimensions: 7 x 1.2 x 9.2 inches
- Shipping Weight: 1.8 pounds (View shipping rates and policies)
- Average Customer Review: 4.3 out of 5 stars See all reviews (53 customer reviews)
- Amazon Best Sellers Rank: #69,961 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Version Control with Git: Powerful tools and techniques for collaborative software development 2nd Edition
Use the Amazon App to scan ISBNs and compare prices.
Frequently Bought Together
Customers Who Bought This Item Also Bought
Powerful tools and techniques for collaborative software development
About the Author
Jon Loeliger is a freelance software engineer who contributes to Open Source projects such as Linux, U-Boot, and Git. He has given tutorial presentations on Git at many conferences including Linux World, and has written several papers on Git for Linux Magazine.
In prior lives, Jon has spent a number of years developing highly optimizing compilers, router protocols, Linux porting, and the occasional game. Jon holds degrees in Computer Science from Purdue University. In his spare time, he is a home winemaker.
Matthew McCullough, Vice President of Training for GitHub.com, is an energetic 15-year veteran of enterprise software development, world-traveling open source educator, and co-founder of a US consultancy. All these activities provide him avenues of sharing success stories of leveraging Git and GitHub. Matthew is a contributing author to the Gradle and Jenkins O'Reilly books, as well as the creator of the Git Master Class series for O'Reilly. Matthew also regularly speaks on the No Fluff Just Stuff Java symposium series. He is the author of the DZone Git RefCard, and president of the Denver Open Source Users Group.
Top Customer Reviews
The chapter that is supposed to serve as an introduction to git (Chapter 3) is a scattershot mishmash of common tasks like executing a commit and once-off configuration commands like setting your commit author information. The common tasks that it covers tend to be covered very, very quickly as more of a teaser for more-complete coverage later in the book. While it's fine to delay full coverage of usage until later, reading only this chapter would leave you totally ill-equipped to do anything useful with git. By contrast, Chapter 2 of Pro Git contains most everything you need to be an autonomous, if somewhat unsophisticated, git user working in a single branch.
Chapter 4, ostensibly about "Basic Git Concepts" (since that is its title), is actually mostly about git internals, and is completely out of place at the beginning of the book. Why are we covering blobs and packfiles before we even cover what a branch is? Does knowing the git write-tree command help me understand how to use git well as a beginner? (And if you're not concerned about beginners, why include information about how to install git?) This is basic stuff, guys: cover the high-level interface first, then cover the low-level commands and internals. Would you start off a Unix tutorial by talking about disk blocks and inodes before covering what a directory is?
This pattern continues throughout the book. The authors are completely tonedeaf to the needs of the learner, and simply stream information out, never seeming to ask themselves if their presentation will create a progressively more effective git user.
Coverage of tags is suprisingly bad (almost nonexistent, in fact).
All that said, this is probably the most-comprehensive book on git available. And the later chapters on advanced manipulations and tips and tricks are good. I give it four stars for content, and dock it a star for its abysmal organization. It's not throw-it-in-a-fire bad, but you're better off reading Pro Git as a tutorial, and referring to the man pages (which are quite good) after that.
After a cursory Git introduction, the authors provide what I consider the core of the text (the first 14 chapters of 21), covering installation, how to get started, basic Git concepts, file management, the Git index, commits, branches, diffs, merges, altering commits, the stash, the reflog, remote repositories, repository management, and patches. After this core, the discussion turns to hooks, combining projects, submodule best practices, using Git with SVN repositories, advanced manipulations, tips/tricks/techniques, and use of GitHub (although I decided to skip a couple of these latter chapters, such as the one on hooks, because I do not plan to use this feature in the near future).
Working through this book, I especially appreciated the diagrams (which explain Git objects and commit graphs) and the high number of working examples (of which I recently executed about 90% or so). The diagrams which explain branching and merging are the types of diagrams typical colleagues and I white board with each other to explain a given project state, helping enable both understanding of the material as well as providing future reference for visual depiction.
One of the reasons I decided to go with this book to get more familiar with Git, other than the fact that there are not many Git texts of which to choose in the marketplace, is because it was published relatively recently relative to when I purchased it about a year ago. Unfortunately, a potentially better book called "Pro Git (Second Edition)" that other reviewers have mentioned has since been published, something that happens when a book is not read soon after purchase.
Be aware that while almost every single example that I executed over the course of working through this book ran flawlessly (somewhat of a rarity with technology texts), I did notice on a few occasions that the command line output from a handful of commands was slightly different than what was represented in the material, and I attribute this to a lack of alignment between the Git version that the authors used (1.7.9) and what I used (2.1.4), downloaded as part of Cygwin. However, this aspect did not distract from the material presented by Loeliger and McCullough.
Although the chapter on installation (Chapter 2) does briefly mention the Git version that the authors used, the remainder of the book really does not address this topic apart from a few isolated instances. For example, the chapter on remote repositories (Chapter 12) mentions that differing versions will display a remote-tracking branch differently. When executing another example in the same chapter, I came across a warning that gets displayed when pushing to the depot because the implicit value of "push.default" was changed in Git 2.0 from "matching" to "simple". And although minor, an attempt to clone the 1.5.x branch of SVN referenced in the chapter on using Git with SVN repositories resulted in a "repository moved temporarily" message (the most recent stable version of SVN is currently 1.8.13).
In general, however, this book provides a solid discussion of Git, and these are all but minor annoyances. A review of Git itself is not the purpose of a Git book review, but if you are at a point where you have solely heard about Git from colleagues who recommend that Git should be used because "it's cool" or remark that "all you really need to know are like three commands, don't worry about the other stuff" (I have actually heard developers make these types of comments), diving into Git with regard to what is happening under the covers is arguably the right way to go, and this book can help.
Most Recent Customer Reviews
Author would have explained how to use git and then explained about internals.