= gerrit gc

== NAME
gerrit gc - Run the Git garbage collection

== SYNOPSIS
--
'ssh' -p <port> <host> 'gerrit gc'
  [--all]
  [--show-progress]
  <NAME> ...
--

== DESCRIPTION
Runs the Git garbage collection for the specified projects.

A Gerrit system administrator can define the default parameters that
should be used for running the garbage collection in the user global
Git configuration file of the system user that runs the Gerrit
server.

Since the user global Git configuration file is overlaid with the Git
configuration on repository level it is possible to specify
repository specific parameters for the garbage collection in the Git
repository configuration of every project.

== ACCESS
Caller must be a member of the privileged 'Administrators' group,
or have been granted the
link:access-control.html#capability_runGC[Run Garbage Collection]
global capability.

== SCRIPTING
This command is intended to be used in scripts.

== OPTIONS
<NAME>::
	Name of the projects for which the Git garbage collection should be run.

--all::
	If specified the Git garbage collection is run for all projects
	sequentially.

--show-progress::
	If specified progress information is shown.

== EXAMPLES

Run the Git garbage collection for the projects 'myProject' and
'yourProject':
=====
	$ ssh -p 29418 review.example.com gerrit gc myProject yourProject
	collecting garbage for "myProject":
	...
	done.

	collecting garbage for "yourProject":
	...
	done.
=====

Run the Git garbage collection for all projects:
=====
	$ ssh -p 29418 review.example.com gerrit gc --all
=====

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
