> 3. By adding a new refspec "+refs/heads/*:refs/hidden/<remote>/*" > we can ensure that we actually load the new values somewhere in > our refspace while not updating refs/heads or refs/remotes. By > storing these refs here, the commit-graph job will update the > commit-graph with the commits from these hidden refs. > > 4. --prune will delete the refs/hidden/<remote> refs that no > longer appear on the remote. Having a ref path where Git can place commit IDs that it needs persisted is useful, not only in this case but in other cases (e.g. when fetching a submodule commit by hash, we might not have a ref name for that commit but want to persist it anyway), so I look forward to having something like this. The name of this special ref path and its specific nature could be discussed further, but maybe it is sufficient for now to just say that the refs under this special ref path are controlled by Git, and their layout is experimental and subject to change (e.g. future versions of Git could just erase the entire path and rewrite the refs its own way).