Version Control with Git takes you step-by-step through ways to track, merge, and manage software projects, using this highly flexible, open source version control system.
Git permits virtually an infinite variety of methods for development and collaboration. Created by Linus Torvalds to manage development of the Linux kernel, it's become the principal tool for distributed version control. But Git's flexibility also means that some users don't understand how to use it to their best advantage. Version Control with Git offers tutorials on the most effective ways to use it, as well as friendly yet rigorous advice to help you navigate Git's many functions.
With this book, you will: Git has earned the respect of developers around the world. Find out how you can benefit from this amazing tool with Version Control with Git .
I recommend this book to anybody who has decided that Git is going to be their DVCS and intends to read the book sequentially, cover to cover. If you're still trying to decide between Mercurial, Bazaar and Git, this is probably a lot more information than you want or require. If you're looking for a quick reference, then the progressive structure may leave you scratching your head when jumping around topic areas.
Once you settle on Git, and want to invest the time to build up the conceptual framework you'll need to succeed with it, this book won't disappoint.
Very clearly written, but not for dummies, and not a cookbook. Great book for people who need know why Git works the way it does, in addition to learning commonly used commands. It has most everything you need to use Git effectively. As a bonus, there are plenty of diagrams explaining the underlying git architecture.
The author has a great sense of humor, that made it an easy read, but not a useless one.
Everything is broken down to simplicity, and even if you have been working with Git for a long time you will definetly learn something new, or get a better undestanding of Git.
Three-and-a-half-stars. I can understand why this book was organized the way it is, but I would have preferred if it had spent the first half of the book explaining Git's structures and storage without any reference to commands, and then, and only then, introduced the commands. The fact is, I can find perfectly fine command references for Git on-line, and even good examples, but getting a good description of what is going on under the covers would require either a lot of reading of code, or a book. But not this book. Oh, it does a pretty good job of describing the commands, but breaking up the description of Git's database (in the informal sense) with commands makes it much harder to grasp than necessary. (And probably no technical editor would allow the book to be written the way I would have preferred it because it would have turned away any customer wanting a command reference.)
But still, I did get a fair amount of information out of it by reading it cover-to-cover (less the sections on Subversion).
Like "Pro Git" book, this is not a book to start with Git. For that, I'd recommend "Git for Humans" and "Jumpstart Git".
However, after having used Git a little while, this book is a great source to understand behind-the-scene details of Git. While such details may not be helpful in day-to-day use of Git, being aware of such details can 1) help appreciate the design of Git and 2) provide a peek into the kind of situations one can get into with Git. That second reason is most useful as makes one wonder if it is worthwhile getting into such situations and possibly influence the workflow to avoid such situations :)
I liked the presentation style in the book -- the concepts are explained followed by a step-by-step example illustrating the concepts and its nuances followed by discussion about aspects such dos/donts and choices.
Ao criar e implementar a primeira versão do Git, Linus Torvalds tinha apenas um alvo: eliminar obstáculos que ferramentas de versionamento estavam colocando no caminho da turma que contribuía com o Kernel do Linux. A ideia que ele aplicou, uma string, chamada de SHA1, de 160 bits (40 caracteres hexadecimais), identificando unicamente qualquer objeto armazenado, acabou resolvendo um problema enorme de escalabilidade. A ideia é tão poderosa que ninguém mais quer saber dos (agora) antigos CVS e SVN. Isso é impacto. Saber um pouco de Git acabou se sendo obrigatório para quem participa de uma equipe de software, profissionalmente ou por hobby...mesmo que não entenda muito bem os mecanismos complexos de branching e merging (este livro tem todos esses detalhes, anyway).
Obwohl das Buch bereits vor 10 Jahren erschienen ist, enthält es auch heute noch viel relevantes zu Git. Die Reihenfolge und die Priorisierung der einzelnen Themen geht an der Benutzung von Git komplett vorbei. Während die internen technischen Details zum Speichern der Dateien in Kapitel 5 behandelt werden, folgen Commits erst im Kapitel 6 und remote Repositories gar erst im Kapitel 11.
Bardzo dobry opis Git-a, wraz z przykładami i opisami. Nie wiedziałem, że jeżeli się zagłębić, to może być tak skomplikowany Mimo, że książka ma już swój wiek. I git jest w wersji 2.x. Niestety nie było go za czasów tej książki.
A thorough guide to learning the deeper truths of Git.
First you learn Git on your own, poking around online. That's enough. Then you can read this book and become the local guru. The last stage is learning the source code and working on the Git dev team. Choose your own path.
git is the most powerful and conceptually elegant source code management system I've used. (Perhaps Mercurial rivals it? I haven't used Mercurial.) But it seems to be in a state of arrested development. Many commands commonly used in ordinary development are basically unimplemented, and have to be performed with a set of lower-level commands. For example, publishing a local branch so remote developers can use it, and then setting up the branch so the remote copy continues to get updates, is a hard-to-memorize set of 3 commands, whereas it's a no-brainer in Subversion.
My theory is that Linus Torvalds built the initial git as a set of low-level commands for managing versioned data in general, and intended higher-level, more convenient SCMSes to be built on top of it. Since Linus had scratched his own itch, he left the higher-level implementation to others, but no one rose to the challenge. Now it's too late -- git is the default SCMS for open-source projects, and so we're stuck using low-level commands, or writing custom scripts for common tasks.
It's as if we had reverted to programming in C. The newfound power is liberating, but it comes at a price. Whereas I have learned all previous SCMSes casually (CSV, SVN, Perforce), learning git is like learning C. You won't just pick it up. I've used it professionally for 2 years and I'm still floundering. To really use it well, you have to understand it deeply. You probably have to read a book.
Version Control with Git is an excellent remedy to this challenge. It introduces the reader to git's object model (objects, trees, commits, refs, tags), and shows how git's everyday commands use its "plumbing" commands to manipulate these basic materials. The book walks through detailed examples, including some nearly-pathologically complex merges, and describes distributed development thoroughly.
If I have a nit to pick, it's that the book's discussion of distributed development is obsolete. In 2009, it may have been appropriate to spend a long chapter discussing how to email patches, and how to apply patches from an email. But these days, it seems that GitHub has nearly obviated this process. In my experience, open-source developers, who need to review each other's changes before applying them, use GitHub "pull requests" instead of git's commands for managing patches over email. I hope a new edition will drastically cut the section on patches and add a discussion of GitHub's collaborative features.
If you're not ready to read a whole book, "Git from the bottom up" by John Wiegley provides some of the core concepts:
Очень нравится общая идея - подробно описана внутренняя логика Git, как именно он манипулирует объектами. Не на уровне реализации, а на уровне логики. И все, что описывает автор, дается с полными листингами того, что он делает, и объяснениями, с использованием схем объектов внутри Git.
Но как же это все занудно изложено.. Наверно, это не вина автора, сам по себе этот формат выгоднее был бы для какого-то интерактивного курса, когда тебе подсказывают, какие команды сделать, показывают вывод.
Книга совершенно не пригодна в роли справочника - все описания пространные, на много страниц.
И моя основная претензия - нет внятного изложения повседневных рецептов, что и для каких ситуаций более пригодно. Все это отчасти размазано по книге, а отчасти просто отсутствует. Потому что первая часть книги ну очень примитивная, а потом как-то резко растет сложность и надуманность приводимых примеров, даются рецепты, мало кому нужные в реальной жизни.
Книга была бы идеальной, если бы в ней был какой-то сжатый итоговый раздел - что вот это лучше делать так, а тут лучше эдак.
Понятно, что цель автора "научить ловить рыбу", чтобы читатель сам чувствовал, что и где использовать. Но это приходит не сразу, а с практикой.
Так что попозже, возможно, поищу еще какую-нибудь книгу по Git. Хотя и эта очень основательно повысила мою уверенность в работе и понимание, что именно п��оисходит.
Version Control with Git is a fantastic book if you want to understand how Git is really working. This is important, because I don't know if anyone could ever really use Git without know how it's really working.
The book starts at the simplest possible place and shows examples of using Git, which become handy references for what you want to do with the system. But at each step of the way, it also explains what Git is doing under the hood, with diagrams, examples, and lengthy explanations. Sometimes there are even experiments that help you understand even better what's going on.
The book is dense, filled with a great deal of information, and some may find it dry. But for the most part, I really enjoyed it, and walked away from the book with a far greater understanding of how to use Git. I recommend it for anyone who is switching to Git.
This book starts off with the concepts needed to use the product, delves into deeper - more technical - topics and finishes with a look at GitHub. I found that it was a good resource for learning what I could do with Git without spending too much time on one topic. The authors plainly discuss the tool's limitations and how developers are working around them. My favourite parts were on the concept of the working directory and repository, and branching.
My one criticism is that I felt that there could have been more explanation at times about how to apply these more advanced concepts and that the authors could have shown what the next step for some of these features would be. With that said, I learned a lot about how this tool works, how to use it in a variety of situations, and what it's capable of.
As a disclaimer, I received this book as part of O'Reilly's Blogger Review Program.
This book on the Git source repository system is probably one of the driest tech books I've ever read. It's filled with overly complex explanations of an already overly complex piece of software, which made it hard to tell the difference. Here's an example of the treats in store for you if you read it:
"Directly fetching and merging a branch with a complex history will yield a different history in the receiving repository than the history that results from a patching sequence. Remember, one of the effects of creating a patch sequence on a complex branch is to topologically sort the graph into a linearized history. Hence, applying it to another repository yields a linearized history that wasn't in the original."
I wish this was a typographical error but it isn't: "Git manages change." It doesn't do that. No language or framework does that. "A monkey who uses Git can manage change" is more appropriate.
But there's good news! This is an excellent book anyone who cares about version control can read without regret.
I still encourage some people to read the less lengthier introductions as this is far from that.
Examples are OK but the hardly gave scenarios relevant for software development teams.
I use this book as a reference, though I read the first version all the way through.
Disappointed that this version hasn't added any content on signing tags and why that should be done.
The expanded section on github is nice, but more info on other tools using git would be nice.
As a reference book it is great. The descriptions are detailed and efficient without sacrificing clarity. Git is a complex tool but this book is useful in understanding it.
I read this on my Kindle thanks to my employer's Safari Books Online subscription (thanks Oracle). I was looking for a definitive tome on the topic and this fit the bill. My only quibble is the absence of some content early in the book reassuring the reader that eventually this will all make sense in the context of that little bit of Git knowledge you had just to get access to something on GitHub.
I've been using git for about a year and still picked up some ideas from this book - for example, I had a pretty woeful understanding of how the index worked and this covered it well. What I like about it compared to many other references is that it dives into the core abstractions right away rather than focusing on the surface details of command syntax. I've recommended it to my team at work.
This is one of the gems in the O'Reilly series. The authors do more than show you how to use the git commands; they explain how git is constructed. This means that you will not only get an understanding how to use git, you will also learn how git is set apart from other vcs offerings. I highly recommend this for folks who are trying to understand why everyone is excited about git.
A very good guide for someone who's been using git and wants a deep understanding of the architecture and range of features, which matches me well! It's organized logically from a conceptual standpoint, which makes it lousy if one wants to minimize the pages read before being able to do something useful. With a little git experience, though, this becomes an excellent read-once-and-refer.
Good technical description of the inner workings of git, a must if you really want to master git's advantages. The level of quality between chapters is quite varying, some of them really don't tell you much more than the man-page, albeit with good examples.
Este libro intenta explicar cómo funciona git por dentro en vez de simplemente enseñar a usarlo. Aunque empieza desde conceptos muy básicos, no es un libro para principiantes. Está muy bien, pero no me ha entusiasmado de todas formas, no me importaría no haberlo leído.
Great book to introduce and get in depth with git. Takes from from beginner to intermediate/advanced and lets' you start to consume other more dense git topics. Once you finish it give the 2-4 chapter a re-read since you'll be able to get those concepts better after you get the gestalt.
I thought this book was very good, but I found it bounced from being too detailed and in the guts behind how Git works to being too simplistic in it's examples of how to use Git in practical terms.
It taught me what I needed to know, and the coverage was more than thorough. A bit worshipful, and took a bit too much delight in abstract and meta examples and clarity suffered for that.