blob: fde9f2f294e8152d86c1ea2cbd5c8e2395e07609 [file] [log] [blame] [edit]
git-pack-refs(1)
================
NAME
----
git-pack-refs - Pack heads and tags for efficient repository access
SYNOPSIS
--------
[verse]
'git pack-refs' [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]
DESCRIPTION
-----------
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` directory hierarchy.
A recommended practice to deal with a repository with too many
refs is to pack its refs with `--all` once, and
occasionally run `git pack-refs`. Tags are by
definition stationary and are not expected to change. Branch
heads will be packed with the initial `pack-refs --all`, but
only the currently active branch heads will become unpacked,
and the next `pack-refs` (without `--all`) will leave them
unpacked.
OPTIONS
-------
include::pack-refs-options.adoc[]
BUGS
----
Older documentation written before the packed-refs mechanism was
introduced may still say things like ".git/refs/heads/<branch> file
exists" when it means "branch <branch> exists".
GIT
---
Part of the linkgit:git[1] suite