ref is essentially a pointer. It's a name that points to an
object. For example,
"master" --> 1a410e...
They are stored in `.git/refs/heads/ in plain text files.
$ cat .git/refs/heads/mainline 4bb6f98a223abc9345a0cef9200562333
This is commonly what are called
branches. However, you'll note that in
git there is no such thing as a
branch - only a
Now, it's possible to navigate
git purely by jumping around to different
objects directly by their hashes. But this would be terribly inconvenient. A
ref gives you a convenient name to refer to
objects by. It's much easier to ask
git to go to a specific place by name rather than by hash.