73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
git-pack-refs(1)
 | 
						|
================
 | 
						|
 | 
						|
NAME
 | 
						|
----
 | 
						|
git-pack-refs - Pack heads and tags for efficient repository access
 | 
						|
 | 
						|
SYNOPSIS
 | 
						|
--------
 | 
						|
[verse]
 | 
						|
'git pack-refs' [--all] [--no-prune]
 | 
						|
 | 
						|
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
 | 
						|
-------
 | 
						|
 | 
						|
--all::
 | 
						|
 | 
						|
The command by default packs all tags and refs that are already
 | 
						|
packed, and leaves other refs
 | 
						|
alone.  This is because branches are expected to be actively
 | 
						|
developed and packing their tips does not help performance.
 | 
						|
This option causes branch tips to be packed as well.  Useful for
 | 
						|
a repository with many branches of historical interests.
 | 
						|
 | 
						|
--no-prune::
 | 
						|
 | 
						|
The command usually removes loose refs under `$GIT_DIR/refs`
 | 
						|
hierarchy after packing them.  This option tells it not to.
 | 
						|
 | 
						|
 | 
						|
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
 |