Kristoffer Haugsbakk <code@xxxxxxxxxxxxxxx> writes: > `HEAD` is an invalid branch name.[1] But the `@` synonym is allowed. > This is just as inconvenient since commands like `git checkout @` will, > quite sensibly, do `git checkout HEAD` instead of checking out that > branch; in turn there is no practical reason to use this as a branch > name since you cannot even check out the branch itself (only check out > the commit which `refs/heads/@` points to). I am not sure this is sensible at all, after all these years. I suspect that it is much more productive to deprecate and remove "@" that is a built-in synomym for HEAD (but "refs/remotes/origin/@" does not act as a synonym for "refs/remotes/origin/HEAD"). Having two ways to call the same thing merely adds to confusion in this case, unlike "HEAD" referring to 'master' (when 'master' is checked out), which is also to have two ways to call the same thing, but adds a true convenience. Those who really want to use @ can do something like $ echo "ref: HEAD" >.git/@ or something, perhaps.