path: root/Documentation/git-prune.txt
diff options
authorJunio C Hamano <>2005-12-09 07:18:41 (GMT)
committerJunio C Hamano <>2005-12-09 07:18:41 (GMT)
commit2b86976bfd6e42609692d57fffaef72bd985c23a (patch)
treec0839ba1ec37f195a19a5cca13cf6fe499088494 /Documentation/git-prune.txt
parent2dee581667d62d113605e97de0beda6a9dbca153 (diff)
git-prune: never lose objects reachable from our refs.
Explicit <head> arguments to git-prune replaces, instead of extends, the list of heads used for reachability analysis by fsck-objects. By giving a subset of heads by mistake, objects reachable only from other heads can be removed, resulting in a corrupted repository. This commit stops replacing the list of heads, and makes the command line arguments to add to them instead for safety. Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/git-prune.txt')
1 files changed, 9 insertions, 18 deletions
diff --git a/Documentation/git-prune.txt b/Documentation/git-prune.txt
index 05c8d49..f694fcb 100644
--- a/Documentation/git-prune.txt
+++ b/Documentation/git-prune.txt
@@ -13,10 +13,11 @@ SYNOPSIS
-This runs `git-fsck-objects --unreachable` using the heads
-specified on the command line (or `$GIT_DIR/refs/heads/\*` and
-`$GIT_DIR/refs/tags/\*` if none is specified), and prunes all
-unreachable objects from the object database. In addition, it
+This runs `git-fsck-objects --unreachable` using all the refs
+available in `$GIT_DIR/refs`, optionally with additional set of
+objects specified on the command line, and prunes all
+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`.
@@ -31,29 +32,19 @@ OPTIONS
Do not interpret any more arguments as options.
- Instead of keeping objects
+ In addition to objects
reachable from any of our references, keep objects
- reachable from only listed <head>s.
-Note that the explicitly named <head>s are *not* appended to the
-default set of references, but they replace them. In general you
-would want to say `git prune $(git-rev-parse --all) extra1
-extra2` to keep chains of commits leading to extra1, extra2,
-... in addition to what are reachable from your own refs.
-Saying `git prune extra1 extra2` would *lose* objects reachable
-only from the usual refs, which is usually not what you want.
+ reachable from listed <head>s.
-To prune objects not used by your repository and another that
+To prune objects not used by your repository nor another that
borrows from your repository via its
-$ git prune $(git-rev-parse --all) \
- $(cd ../another && $(git-rev-parse --all))
+$ git prune $(cd ../another && $(git-rev-parse --all))