Home Explore Blog CI



git

1st chunk of `Documentation/git-repack.adoc`
b7a2011d338b577fe1a3e690f3066f57e6c6479f3f2aaa890000000100000fae
git-repack(1)
=============

NAME
----
git-repack - Pack unpacked objects in a repository


SYNOPSIS
--------
[verse]
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m]
	[--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]
	[--write-midx] [--name-hash-version=<n>]

DESCRIPTION
-----------

This command is used to combine all objects that do not currently
reside in a "pack", into a pack.  It can also be used to re-organize
existing packs into a single, more efficient pack.

A pack is a collection of objects, individually compressed, with
delta compression applied, stored in a single file, with an
associated index file.

Packs are used to reduce the load on mirror systems, backup
engines, disk storage, etc.

OPTIONS
-------

-a::
	Instead of incrementally packing the unpacked objects,
	pack everything referenced into a single pack.
	Especially useful when packing a repository that is used
	for private development. Use
	with `-d`.  This will clean up the objects that `git prune`
	leaves behind, but `git fsck --full --dangling` shows as
	dangling.
+
Note that users fetching over dumb protocols will have to fetch the
whole new pack in order to get any contained object, no matter how many
other objects in that pack they already have locally.
+
Promisor packfiles are repacked separately: if there are packfiles that
have an associated ".promisor" file, these packfiles will be repacked
into another separate pack, and an empty ".promisor" file corresponding
to the new separate pack will be written.

-A::
	Same as `-a`, unless `-d` is used.  Then any unreachable
	objects in a previous pack become loose, unpacked objects,
	instead of being left in the old pack.  Unreachable objects
	are never intentionally added to a pack, even when repacking.
	This option prevents unreachable objects from being immediately
	deleted by way of being left in the old pack and then
	removed.  Instead, the loose unreachable objects
	will be pruned according to normal expiry rules
	with the next 'git gc' invocation. See linkgit:git-gc[1].

-d::
	After packing, if the newly created packs make some
	existing packs redundant, remove the redundant packs.
	Also run  'git prune-packed' to remove redundant
	loose object files.

--cruft::
	Same as `-a`, unless `-d` is used. Then any unreachable objects
	are packed into a separate cruft pack. Unreachable objects can
	be pruned using the normal expiry rules with the next `git gc`
	invocation (see linkgit:git-gc[1]). Incompatible with `-k`.

--cruft-expiration=<approxidate>::
	Expire unreachable objects older than `<approxidate>`
	immediately instead of waiting for the next `git gc` invocation.
	Only useful with `--cruft -d`.

--max-cruft-size=<n>::
	Overrides `--max-pack-size` for cruft packs. Inherits the value of
	`--max-pack-size` (if any) by default. See the documentation for
	`--max-pack-size` for more details.

--combine-cruft-below-size=<n>::
	When generating cruft packs without pruning, only repack
	existing cruft packs whose size is strictly less than `<n>`,
	where `<n>` represents a number of bytes, which can optionally
	be suffixed with "k", "m", or "g". Cruft packs whose size is
	greater than or equal to `<n>` are left as-is and not repacked.
	Useful when you want to avoid repacking large cruft pack(s) in
	repositories that have many and/or large unreachable objects.

--expire-to=<dir>::
	Write a cruft pack containing pruned objects (if any) to the
	directory `<dir>`. This option is useful for keeping a copy of
	any pruned objects in a separate directory as a backup. Only
	useful with `--cruft -d`.

-l::
	Pass the `--local` option to 'git pack-objects'. See
	linkgit:git-pack-objects[1].

-f::
	Pass the `--no-reuse-delta` option to `git-pack-objects`, see
	linkgit:git-pack-objects[1].

-F::
	Pass the `--no-reuse-object` option to `git-pack-objects`, see
	linkgit:git-pack-objects[1].

-q::
--quiet::
	Show no progress over the standard error stream and pass the `-q`
	option to 'git pack-objects'.

Title: Git Repack Command
Summary
The git-repack command is used to pack unpacked objects in a repository, combining them into a single, more efficient pack to reduce load on mirror systems, backup engines, and disk storage, with various options to customize the packing process.