Philip Nilsson over at Jayway has an illuminating post about git. His idea is that git is best understood as a purely functional immutable data structure (like a CL list). That probably doesn’t seem very promising but he makes a good case and the approach does reveal the essential things you have to understand about git.
The post is well written and starts with a quick explanation of what he means by “purely functional” so even if you’re not a Lisper it will all make sense. I won’t step on Nilsson’s post by reiterating the details here so you’ll have to go on over to see them. Don’t worry, it’s worth the trip.