I asked GitHub Support, this was their response (emphasis mine):
We use a separate ref namespace for all Pull Requests which we use for various things including restoring the branch. Since we keep those [Pull Request] refs indefinitely, there’s no time limit on restoring a branch.
You can see these special references in your remote by using the following:
$ git ls-remote | grep pull
From git@github.com:<username>/<remote>.git
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa refs/pull/1/head
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb refs/pull/1/merge
cccccccccccccccccccccccccccccccccccccccc refs/pull/2/head
dddddddddddddddddddddddddddddddddddddddd refs/pull/2/merge
The references are namespaced under refs/pull/<pull request number>/
. The head
reference points at the tip of the branch that’s being pull requested, i.e. the last commit on the branch. I’m not sure what the merge
reference is though.