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

Übersicht

git prune [-n] [--expire=<date>]

Beschreibung

Der git prune-Befehl löscht lose Objekte, die von keiner Ref aus erreichbar sind. Er wird normalerweise indirekt von git gc aufgerufen; ihn direkt auszuführen umgeht einige Sicherheitsprüfungen von gc. Die --expire-Gnadenfrist (Standard 2 Wochen) verhindert das Löschen kürzlich erstellter Objekte, die zu laufenden Operationen gehören könnten.

Im täglichen Einsatz integriert sich git prune 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 prune --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 prune 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 prune hilft, alle drei zu vermeiden.

Häufige Optionen

OptionBeschreibung
-n, --dry-runZeigt, was gelöscht würde, ohne zu löschen.
--expire=<date>Prunet nur Objekte, die älter als das sind.
--progressZeigt Fortschritt.
--verboseDetailliert jedes geprunte Objekt.

Beispiele

git prune -n
    # Vorschau auf das Pruning

    git prune --expire=now
    # Aggressiv: alle Unerreichbaren sofort löschen

    git prune --expire=2.weeks.ago
    # Standardverhalten: jüngste Unerreichbare behalten

Häufige Fehler

git prune --expire=now kann Objekte löschen, die noch im Reflog oder Stash sind, falls Sie diese kürzlich abgelaufen sind. Führen Sie immer zuerst git fsck aus, um zu verstehen, was auf dem Spiel steht. Auf einem ausgelasteten Repo kann das Prunen während eines Fetches oder Rebases Probleme verursachen.

Verwandte Befehle

git gc, git fsck, git reflog expire, git repack