Übersicht
git maintenance start
git maintenance run [--task=<task>]
git maintenance stop
Beschreibung
Der git maintenance-Befehl, eingeführt in Git 2.29, ersetzt und erweitert git gc --auto mit geplanten, feingranularen Wartungsaufgaben: Prefetch, Commit-Graph-Erzeugung, Lose-Objekt-Packing, inkrementelles Repack und pack-refs. Das Ausführen von git maintenance start registriert einen wiederkehrenden Zeitplan via cron, launchd, systemd oder Task Scheduler je nach Plattform.
Für serverseitige oder langlebige Klone großer Repositories verbessert das Aktivieren von Maintenance die tägliche Reaktionsfähigkeit dramatisch. Operationen wie git status und git log werden schneller, da die Commit-Graph- und Reachable-Bitmap-Daten aktuell gehalten werden.
Im täglichen Einsatz integriert sich git maintenance 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 maintenance --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 maintenance 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 maintenance hilft, alle drei zu vermeiden.
Häufige Optionen
| Unterbefehl / Option | Beschreibung |
|---|---|
start | Registriert einen Hintergrund-Zeitplan. |
stop | Hebt den Zeitplan auf. |
run | Führt Aufgaben sofort aus. |
--task=<task> | Führt nur diese Aufgabe aus (commit-graph, prefetch usw.). |
register / unregister | Fügt Repo zum Maintenance-Set hinzu oder entfernt es. |
--schedule=<freq> | Frequenz: hourly, daily, weekly. |
Beispiele
git maintenance start
# Hintergrund-Maintenance für dieses Repo einrichten
git maintenance run --task=commit-graph
# Den commit-graph auf Anforderung aktualisieren
git maintenance run --task=prefetch
# Upstream-Objekte fetchen, ohne Refs zu aktualisieren
git maintenance unregister
# Geplante Maintenance für dieses Repo stoppen
Häufige Fehler
Vergessen, dass start eine systemweite geplante Aufgabe registriert. Auf gemeinsamen Maschinen ist das vielleicht nicht erwünscht; verwenden Sie stattdessen register in einer Konfigurationsdatei. Auto-gc zu deaktivieren, ohne Maintenance zu aktivieren, lässt das Repo ungezügelt wachsen.
Verwandte Befehle
git gc, git commit-graph, git fetch --prefetch, git repack