GitHub blocks branch and tag names which begin with refs/
.
Under the hood, all Git refs begin with a prefix (refs/heads/
for branches and refs/tags/
for tags). In typical use, though, users rarely see these prefixes, so they're silently handled by GitHub, the Git client, and other tools. When a similar string is used as the beginning of the visible part of the branch or tag name, this results in ambiguity: did the user intend refs/heads/feature
or refs/heads/refs/heads/feature
? In nearly all cases, refs/
in front of a branch or tag name is accidental and becomes a problematic surprise later.
This change blocks new introductions of such names. Repositories with existing branches named this way can still push updates to those branches.