For a while I’ve been scratching my head on why so many people are jumping on the Git bandwagon. I understood conceptually the benefits of a Distributed Version Control System (DVCS), but every time I sat down to learn Git I ended up more confused than when I started.

I even bought a book - Pragmatic Version Control Using Git. Even after going through that book I still didn’t get it. I was drowning in a sea of commands and I understood the basics of adding and committing files, however, outside of that I was finding myself getting into trouble and not having a clue on how to work through it. I tried using some visual tooling to help, but it didn’t. I attributed it to Git being far to complicated (and in some ways it is compared to other VCSes), and stopped trying to learn Git with a plan to pick it up in the future. Much later in the future.

Then I stumbled on a book that, although being published by Apress, is available in open source form – Pro Git. Not much time had passed since my last attempt, so I wasn’t really enthusiastic about reading another Git book, so I semi-begrudgingly read chapter 1. Still, I wasn’t excited – chapter 1 covered the same stuff that was in Pragmatic Version Control Using Git. Chapter 2 wasn’t that much better – just a laundry list of commands that you are presented with.

Honestly, I don’t know why I kept reading, but I’m SO glad I did. Chapter 3 is where things just clicked. The author started to use visualizations to show how Git works, and he started to explain all the underlying concepts of how Git represents things. As each command is executed, he would show a visualization of how the Git repository changed, and that further reinforced the conceptual ideas. Thru the rest of the book the visualizations were used and this added so much to the value of the content.

I finally understand Git and I will be slowly moving over to it as my main VCS – replacing Subversion. I still think that the supporting tools need to mature (e.g. Visual Git tools – I don’t like command prompt source control), but the basic toolkit is rock solid.

If you want to learn Git, I strongly suggest you buy Pro Git (support the author). If you plan to teach Git using any medium (e.g. book, blog, talk), please favor teaching concepts over commands – your audience just might git [sic] it!