Jeff King <peff@xxxxxxxx> writes: > I suspect there are a lot of other places that are less clear cut. E.g., > I think just: > > git branch foo bar > > will put "foo" through the same interpretation. So you could do: > > git branch -f @{-1} bar > > Is that insane? Maybe. But it does work now. No, it _is_ very sensible, so is "git checkout -B @{-1} <someplace>" Perhaps interpret-branch-name that does not error out when given "@" is what is broken? I suspect that calling interpret_empty_at() from that function is fundamentally flawed. The "@" end user types never means refs/heads/HEAD, and HEAD@{either reflog or -1} would not mean anything that should be taken as a branch_name, either. So perhaps what interpret_empty_at() does is necessary for the "four capital letters is too many to type, so just type one key while holding a shift", but it should be called from somewhere else, and not from interpret_branch_name()?