git: you're explaining it wrong

I switched from Subversion to Git entirely, shortly after YAPC last year. Now I only use svn for work and other people’s projects, and even that is because I’m just way too lazy to bother witching to git-svn just yet.

Git is a really great tool, and I have enjoyed using it much more than Subversion. By this, what I really mean is that it’s generally gotten in my way a lot less while still providing even more tools for getting real work done. I know that it’s all sorts of different under the hood, and I even understand some of them. This article about Git was interesting as lazy reading to get a bit more information about what’s going on under the hood.

It’s not an introduction to using git, though. I have seen quite a few introductions to it that look something like this explanation that Git is all about content and not metadata. I’m not sure who the intended audience is for this post, but I hope it isn’t “people considering switching to Git.”

I see a lot of people saying, “I tried to move to Git, but it was too confusing.” I think the confusion must be coming from the hype, and not so much the product. Sure, Git can be really confusing, when you get into its weird features that come from its magical moon code, but it makes a very simple replacement for a lot of CVS or Subversion use cases. The problem is that once you’ve become part of the Git Mob, you become so excited by true decentralization, content-addressability, and other forms of advanced mtfnpy technologies that you can no longer be bothered to explain how to just check in a damned file change.

Fortunately, I have not yet tried to deal with any of the git commands that are rated GURPS Tech Level 8 or above, so I still bellyfeel Subversionthink.

Sam Vilain, who is way cool, wrote an introduction to git-svn for Subversion/SVK users, and it’s very good, especially at explaining why Git is a good tool. There’s also Git’s own Git - SVN Crash Course, which isn’t bad, but it does some weird things like put tagging and branching under one header (even though in Git they are, as is proper, two distinct things).

My point is this: if you have your own code or documents under source control, git is a very good tool to consider. It’s very, very fast. It’s very easy to use. It comes with a lot of nice tools (like, say, gitk). If that sounds nice, don’t get distracted listening to how it will revolutionize your conception of source code control by eliminating metadata-based delta-logarithm concatenation sets. Just run git init and start committing. The two documents above are decent minimal introductions. Maybe I’ll do a lightning talk on Git For Morons this year.

Written on January 25, 2008
🔀 git
🏷 vcs