You're simply wrong. A ref isn't a name for a commit (the point of having
a ref is that it doesn't persist in naming the same commit). A commit
isn't a blob. If you start telling people complicated and wrong things,
they're surely going to be confused.
Git maintains history as a directed graph, with each commit pointing back
at its history. Refs are the what holds the newest commits that nothing
else points back to. If directed graphs aren't in your users' experience,
you can put it this way: git maintains history like knitting, where each
new stitch holds on to one or more previous stitches, and refs are the
knitting needles that hold the ends where you're working (except that
knitting is a lot wider than software development). gitk --all even
provides the diagram you want to explain it.
SVN branches are incredible confusing because they fail to distinguish the
directory structure of the project's source tree from the arrangement of
available latest versions. And the version numbers for your branch
increase when changes are made to other branches.
I don't think the plumbing does a particularly good job of elucidating the
fundamental git internals; the plumbing does single operations on the
fundamental structures, but that doesn't explain what the fundamental
structures are, or what they mean, or why you'd do particular things to
them. In fact, they don't at all show the difference between what's
expected to change frequently and what's permanent, which will tend to
give you wrong ideas.
And for understanding the basic objects, "git show" will work better than
"git cat-file" (there's no fundamental reason that trees are binary data
and other types aren't, and no particular reason to care about the time
format in commit headers, etc), and the plumbing programs for creating the
fundamental objects are an even more uneven and arbitrary presentation.
-Daniel
*This .sig left intentionally blank*
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html