Von Gast (nicht überprüft) , 29 April 2026

Übersicht

git gc [--auto] [--aggressive] [--prune=<date>]

Beschreibung

Der git gc-Befehl führt Wartungsaufgaben aus: Er packt lose Objekte, entfernt unerreichbare Objekte über das Prune-Fenster hinaus, packt Refs und aktualisiert Hilfsdateien. Git führt automatisch gc --auto nach Operationen aus, die viele lose Objekte erzeugen (wie ein großes Fetch), sodass die meisten Nutzer gc nie manuell aufrufen. Manuelles Aufrufen ist nützlich nach dem Umschreiben von Historie, dem Löschen vieler Branches oder zur sofortigen Speicherrückgewinnung.

Das --aggressive-Flag macht zusätzliche Arbeit — es berechnet Deltas neu — ist aber selten die Zeit wert. Modernes Gits Standardverhalten ist gut abgestimmt. Das --prune-Argument steuert, wie alt unerreichbare Objekte sein müssen, bevor sie gelöscht werden; der Standard ist zwei Wochen.

Im täglichen Einsatz integriert sich git gc eng mit Shell-Aliasen, Editor-Plugins und Continuous Integration. Power-User fügen oft Aliase hinzu, die Flags kombinieren, die sie immer übergeben, oder wickeln den Befehl in Skripte, die Teamkonventionen durchsetzen. Die Ausgabeformatierung kann über Git-Config angepasst werden — Pretty-Formate, Farbschemata und Pager-Verhalten sind alle einstellbar. Wenn etwas schiefgeht, ist der erste Diagnoseschritt üblicherweise, den Befehl erneut mit GIT_TRACE=1 in der Umgebung auszuführen, was die zugrunde liegenden Plumbing-Aufrufe offenlegt. Für ungewöhnliche Situationen öffnet die --help-Ausgabe (git gc --help) die vollständige Manpage mit Details zu jeder Option, einschließlich solcher, die in alltäglichen Workflows selten verwendet werden, aber für Debugging oder Skripting im großen Maßstab essentiell sind.

Zu verstehen, wie git gc mit dem Rest von Gits Datenmodell interagiert — der Objektdatenbank, dem Index, Refs und dem Working Tree — zahlt sich aus. Jeder Befehl operiert auf einer Teilmenge dieser Stücke, und zu wissen, welche er berührt, hilft Ergebnisse vorherzusagen und sich von Fehlern zu erholen. Das Lesen der offiziellen Git-Dokumentation neben praktischer Übung in einem Wegwerf-Repository ist der schnellste Weg, die Nuancen zu verinnerlichen. Die meisten Produktionsprobleme mit Git rühren von einer von drei Ursachen: überraschendem Standardverhalten, partiellen Netzwerkoperationen oder dem Umschreiben bereits geteilter Historie. Ein funktionierendes mentales Modell der Nebenwirkungen von git gc hilft, alle drei zu vermeiden.

Häufige Optionen

OptionBeschreibung
--autoLäuft nur, wenn Gits Heuristiken sagen, dass Wartung nötig ist.
--aggressiveVerbringt mehr Zeit damit, optimale Deltas zu finden.
--prune=<date>Prunet unerreichbare Objekte, die älter als das sind.
--no-pruneÜberspringt das Prunen loser Objekte.
--quietUnterdrückt Fortschrittsausgabe.
--forceLäuft, auch wenn ein anderes gc läuft.

Beispiele

git gc
    # Routine-Wartung

    git gc --auto
    # Was Git im Hintergrund ausführt; kann manuell aufgerufen werden

    git gc --prune=now
    # Aggressiv Platz zurückgewinnen; löscht jüngste Unerreichbare (mit Vorsicht verwenden)

    git gc --aggressive
    # Langsames, erschöpfendes Repacking — selten lohnend

Häufige Fehler

--prune=now löscht sofort unerreichbare Objekte, möglicherweise einschließlich solcher, die noch von Reflog oder Stash referenziert werden. Verwenden Sie es nicht leichtfertig. Auto-gc auf einem großen Repo zu deaktivieren lässt lose Objekte sich anhäufen; konfigurieren Sie stattdessen maintenance für neueres Git.

Verwandte Befehle

git maintenance, git repack, git prune, git fsck