$ git fsck-objects (1) -$ git prune $ git count-objects (2) $ git repack (3) -$ git prune (4)+$ git gc (4)
From: Junio C Hamano
+git-gc(1) to do common housekeeping tasks such as + repack and prune. +
+$ git fsck-objects (1) -$ git prune $ git count-objects (2) $ git repack (3) -$ git prune (4)+$ git gc (4)
-after repack, prune removes the duplicate loose objects. +it is easier to use git gc than individual housekeeping commands +such as prune and repack. This runs repack -a -d.
git-gc - + Cleanup unnecessary files and optimize the local repository +
+git-gc
+Runs a number of housekeeping tasks within the current repository, +such as compressing file revisions (to reduce disk space and increase +performance) and removing unreachable objects which may have been +created from prior invocations of git-add(1).
+Users are encouraged to run this task on a regular basis within +each repository to maintain good disk space utilization and good +operating performance.
+The optional configuration variable gc.reflogExpire can be +set to indicate how long historical entries within each branch's +reflog should remain available in this repository. The setting is +expressed as a length of time, for example 90 days or 3 months. +It defaults to 90 days.
+The optional configuration variable gc.reflogExpireUnreachable +can be set to indicate how long historical reflog entries which +are not part of the current branch should remain available in +this repository. These types of entries are generally created as +a result of using git commit --amend or git rebase and are the +commits prior to the amend or rebase occuring. Since these changes +are not part of the current project most users will want to expire +them sooner. This option defaults to 30 days.
+The optional configuration variable gc.rerereresolved indicates +how long records of conflicted merge you resolved earlier are +kept. This defaults to 60 days.
+The optional configuration variable gc.rerereunresolved indicates +how long records of conflicted merge you have not resolved are +kept. This defaults to 15 days.
+Written by Shawn O. Pearce <spearce@spearce.org>
+Part of the git(7) suite
+diff --git a/everyday.txt b/everyday.txt index 5d17ace72..2105a3d2e 100644 --- a/everyday.txt +++ b/everyday.txt @@ -34,6 +34,9 @@ Everybody uses these commands to maintain git repositories. * gitlink:git-repack[1] to pack loose objects for efficiency. + * gitlink:git-gc[1] to do common housekeeping tasks such as + repack and prune. + Examples ~~~~~~~~ @@ -41,10 +44,9 @@ Check health and remove cruft.:: + ------------ $ git fsck-objects <1> -$ git prune $ git count-objects <2> $ git repack <3> -$ git prune <4> +$ git gc <4> ------------ + <1> running without `\--full` is usually cheap and assures the @@ -53,7 +55,8 @@ repository health reasonably well. disk space is wasted by not repacking. <3> without `-a` repacks incrementally. repacking every 4-5MB of loose objects accumulation may be a good rule of thumb. -<4> after repack, prune removes the duplicate loose objects. +<4> it is easier to use `git gc` than individual housekeeping commands +such as `prune` and `repack`. This runs `repack -a -d`. Repack a small project into single pack.:: + diff --git a/git-gc.html b/git-gc.html new file mode 100644 index 000000000..d98934e7b --- /dev/null +++ b/git-gc.html @@ -0,0 +1,330 @@ + + +
+ + + +
+ +
+