> The `Branch` is a snapshot.

I know it's how things are currently implemented, but I'm not sure how intuitive this is from an API standpoint. If I grab a `Branch` and then something else updates `.git/refs/heads/my-branch`, I don't know that it makes sense for us to just say "sorry, I pointed to `deadbeef` when I was created" and proceed with checkout of a ref we know (or could at least figure out) to be wrong.