Hence, if you cannot find a ref under .git/refs
directory, it is probably in the .git/packed-refs
file, which is a commit to ref mapping.
Here is a good description of what "packed refs" in Git are, taken from that manual of git-pack-refs
command:
Traditionally, tips of branches and tags (collectively known as refs) were stored one file per ref in a (sub)directory under
$GIT_DIR/refs
directory. While many branch tips tend to be updated often, most tags and some branch tips are never updated. When a repository has hundreds or thousands of tags, this one-file-per-ref format both wastes storage and hurts performance.This command is used to solve the storage and performance problem by storing the refs in a single file,
$GIT_DIR/packed-refs
. When a ref is missing from the traditional$GIT_DIR/refs
directory hierarchy, it is looked up in this file and used if found.Subsequent updates to branches always create new files under
$GIT_DIR/refs
directo