|
|
|
git-prune(1)
|
|
|
|
============
|
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
|
|
|
git-prune - Prune all unreachable objects from the object database
|
|
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
'git prune' [-n] [-v] [--expire <expire>] [--] [<head>...]
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
|
|
|
|
NOTE: In most cases, users should run 'git gc', which calls
|
|
|
|
'git prune'. See the section "NOTES", below.
|
|
|
|
|
|
|
|
This runs 'git fsck --unreachable' using all the refs
|
docs: don't talk about $GIT_DIR/refs/ everywhere
It is misleading to say that we pull refs from $GIT_DIR/refs/*, because we
may also consult the packed refs mechanism. These days we tend to treat
the "refs hierarchy" as more of an abstract namespace that happens to be
represented as $GIT_DIR/refs. At best, this is a minor inaccuracy, but at
worst it can confuse users who then look in $GIT_DIR/refs and find that it
is missing some of the refs they expected to see.
This patch drops most uses of "$GIT_DIR/refs/*", changing them into just
"refs/*", under the assumption that users can handle the concept of an
abstract refs namespace. There are a few things to note:
- most cases just dropped the $GIT_DIR/ portion. But for cases where
that left _just_ the word "refs", I changed it to "refs/" to help
indicate that it was a hierarchy. I didn't do the same for longer
paths (e.g., "refs/heads" remained, instead of becoming
"refs/heads/").
- in some cases, no change was made, as the text was explicitly about
unpacked refs (e.g., the discussion in git-pack-refs).
- In some cases it made sense instead to note the existence of packed
refs (e.g., in check-ref-format and rev-parse).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years ago
|
|
|
available in `refs/`, optionally with additional set of
|
|
|
|
objects specified on the command line, and prunes all unpacked
|
|
|
|
objects unreachable from any of these head objects from the object database.
|
|
|
|
In addition, it
|
|
|
|
prunes the unpacked objects that are also found in packs by
|
|
|
|
running 'git prune-packed'.
|
|
|
|
|
|
|
|
Note that unreachable, packed objects will remain. If this is
|
|
|
|
not desired, see linkgit:git-repack[1].
|
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
-------
|
|
|
|
|
|
|
|
-n::
|
|
|
|
--dry-run::
|
|
|
|
Do not remove anything; just report what it would
|
|
|
|
remove.
|
|
|
|
|
|
|
|
-v::
|
|
|
|
--verbose::
|
|
|
|
Report all removed objects.
|
|
|
|
|
|
|
|
\--::
|
|
|
|
Do not interpret any more arguments as options.
|
|
|
|
|
|
|
|
--expire <time>::
|
|
|
|
Only expire loose objects older than <time>.
|
|
|
|
|
|
|
|
<head>...::
|
|
|
|
In addition to objects
|
|
|
|
reachable from any of our references, keep objects
|
|
|
|
reachable from listed <head>s.
|
|
|
|
|
|
|
|
EXAMPLE
|
|
|
|
-------
|
|
|
|
|
|
|
|
To prune objects not used by your repository nor another that
|
|
|
|
borrows from your repository via its
|
|
|
|
`.git/objects/info/alternates`:
|
|
|
|
|
|
|
|
------------
|
|
|
|
$ git prune $(cd ../another && $(git rev-parse --all))
|
|
|
|
------------
|
|
|
|
|
|
|
|
Notes
|
|
|
|
-----
|
|
|
|
|
|
|
|
In most cases, users will not need to call 'git prune' directly, but
|
|
|
|
should instead call 'git gc', which handles pruning along with
|
|
|
|
many other housekeeping tasks.
|
|
|
|
|
|
|
|
For a description of which objects are considered for pruning, see
|
|
|
|
'git fsck''s --unreachable option.
|
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
--------
|
|
|
|
|
|
|
|
linkgit:git-fsck[1],
|
|
|
|
linkgit:git-gc[1],
|
|
|
|
linkgit:git-reflog[1]
|
|
|
|
|
|
|
|
Author
|
|
|
|
------
|
|
|
|
Written by Linus Torvalds <torvalds@osdl.org>
|
|
|
|
|
|
|
|
Documentation
|
|
|
|
--------------
|
|
|
|
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
|
|
|
|
|
|
|
|
GIT
|
|
|
|
---
|
|
|
|
Part of the linkgit:git[1] suite
|