Getting started with Git

Well, I finally decided to spend a little while getting used to git, the distributed version control system originally written by Linus Torvalds for managing the development of the Linux kernel.

I’ve been aware of the rapid growth of interest in distributed version control over the last couple of years in particular. Being a relatively long-time user of subversion, I’ve taken the view that using any version control at all is the important thing and that which system you use is a secondary issue. I still believe that, but it’s also clear that people have been surging to the two new arrivals on the scene with startling enthusiasm. My reluctance to learn either git or Mercurial up till now has stemmed from two things:

Firstly, the fact that I am quite happy with subversion, and have no big unsolved problems with it. Spending time learning another vcs is just going to be time I’m not working on productive work…

Secondly, I’ve not been sure which of the two I might want to invest time in if I did learn one. Git is obviously the poster child of the open source movement; suddenly everyone and everything interesting you find is on github. But Mercurial has been adopted with massive enthusiasm by other parts of the developer community; Fog Creek loved it so much they just about dropped everything to write a hosted Mercurial product, because they believed it was so good everyone should be using it.

I have no opinion on which of the two is “better” than the other, if either. Obviously, they’re both good, they’re both better than subversion at making branching and merging accessible to ordinary joes like me, and they’re both good things to use. So how should one decide which one to learn?

Well, in the last few months it became clear that in my chosen sphere at any rate, git has been surging ahead in popularity and has gone past a tipping point where you’re expected to know it as often as not. I think subversion is going the way cvs did; a dying incumbent which was once the standard but which has now been superceded by newer and better technologies that are just, frankly, less of a pain in the ass to use.

In my case, the final stimulus turned out to be simple; I’ve applied for a contract with a development team, and they use git. So clearly, it’s time to learn it…