A ref is any name under .git/refs/. Git ships with refs/heads/ (branches), refs/tags/ (tags), and refs/remotes/ (remote-tracking). You can create your own namespace.
git update-ref refs/notes/review/abc abc123
git update-ref refs/releases/v1.0.0 HEAD
GitHub uses refs/pull/<n>/head to expose every PR as a fetchable ref:
git fetch origin refs/pull/247/head
git checkout FETCH_HEAD
Useful patterns:
refs/queue/ — track commits queued for merge but not yet merged
refs/snapshot/<date> — periodic snapshots for recovery
refs/reviewed/ — mark commits you've personally reviewed
Custom refs are invisible to most tools, which makes them perfect for tool-specific metadata.