Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
-
2.52.0
2025-11-17
- 2.50.1 → 2.51.2 keine Änderungen
-
2.50.0
2025-06-16
- 2.47.2 → 2.49.1 keine Änderungen
-
2.47.1
2024-11-25
-
2.47.0
2024-10-06
- 2.46.3 → 2.46.4 keine Änderungen
-
2.46.2
2024-09-23
- 2.43.1 → 2.46.1 keine Änderungen
-
2.43.0
2023-11-20
- 2.39.1 → 2.42.4 keine Änderungen
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 keine Änderungen
-
2.38.0
2022-10-02
- 2.36.1 → 2.37.7 keine Änderungen
-
2.36.0
2022-04-18
- 2.34.1 → 2.35.8 keine Änderungen
-
2.34.0
2021-11-15
- 2.32.1 → 2.33.8 keine Änderungen
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 keine Änderungen
-
2.31.0
2021-03-15
- 2.30.2 → 2.30.9 keine Änderungen
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 keine Änderungen
-
2.29.0
2020-10-19
SYNOPSIS
git maintenance run [<options>] git maintenance start [--scheduler=<scheduler>] git maintenance (stop|register|unregister) [<options>]
BESCHREIBUNG
Führt Aufgaben zur Optimierung von Git-Repository-Daten aus, wodurch andere Git-Befehle beschleunigt und der Speicherbedarf für das Repository reduziert wird.
Git-Befehle, die Repository-Daten hinzufügen, wie z. B. git add oder git fetch, sind für eine reaktionsschnelle Benutzererfahrung optimiert. Diese Befehle benötigen keine Zeit für die Optimierung der Git-Daten, da sich solche Optimierungen über die gesamte Größe des Repositorys skalieren, während diese Benutzerbefehle jeweils eine relativ kleine Aktion ausführen.
Der Befehl git maintenance bietet Flexibilität bei der Optimierung des Git-Repositorys.
UNTERBEFEHLE
- run
-
Führt eine oder mehrere Wartungsaufgaben aus. Wenn ein oder mehrere
--task-Optionen angegeben sind, werden diese Aufgaben in dieser Reihenfolge ausgeführt. Andernfalls werden die Aufgaben durch die Konfigurationsoptionen bestimmt, bei denenmaintenance.<task>.enabledwahr ist. Standardmäßig ist nurmaintenance.gc.enabledwahr. - start
-
Startet die Wartung des aktuellen Repositorys. Dies führt dieselben Konfigurationsaktualisierungen durch wie der Unterbefehl
register, und aktualisiert dann den Hintergrundplaner, umgitmaintenancerun--scheduledstündlich auszuführen. - stop
-
Hält den Hintergrundwartungsplan an. Das aktuelle Repository wird nicht aus der Liste der gewarteten Repositories entfernt, falls die Hintergrundwartung später neu gestartet wird.
- register
-
Initialisiert Git-Konfigurationswerte, damit jede geplante Wartung für dieses Repository ausgeführt wird. Dies fügt das Repository zur Konfigurationsvariable
maintenance.repoin der globalen Konfiguration des aktuellen Benutzers oder in der durch die Option --config-file angegebenen Konfiguration hinzu und aktiviert einige empfohlene Konfigurationswerte fürmaintenance.<task>.schedule. Die aktivierten Aufgaben sind für die Ausführung im Hintergrund sicher, ohne Vordergrundprozesse zu stören.Der Unterbefehl
registersetzt auch den Konfigurationswertmaintenance.strategyaufincremental, falls dieser Wert noch nicht gesetzt ist. Dieincremental-Strategie verwendet den folgenden Zeitplan für jede Wartungsaufgabe-
gc: deaktiviert. -
commit-graph: stündlich. -
prefetch: stündlich. -
loose-objects: täglich. -
incremental-repack: täglich.
gitmaintenanceregisterdeaktiviert auch die Vordergrundwartung, indemmaintenance.auto=falseim aktuellen Repository gesetzt wird. Diese Konfigurationseinstellung bleibt nach einemgitmaintenanceunregister-Befehl bestehen. -
- unregister
-
Entfernt das aktuelle Repository aus der Hintergrundwartung. Dies entfernt nur das Repository aus der konfigurierten Liste. Es stoppt nicht die Ausführung der Hintergrundwartungsprozesse.
Der Unterbefehl
unregistermeldet einen Fehler, wenn das aktuelle Repository noch nicht registriert ist. Verwenden Sie die Option--force, um auch dann Erfolg zu erzielen, wenn das aktuelle Repository nicht registriert ist.
AUFGABEN
- commit-graph
-
Der
commit-graph-Job aktualisiert diecommit-graph-Dateien inkrementell und verifiziert anschließend, dass die geschriebenen Daten korrekt sind. Das inkrementelle Schreiben ist sicher neben gleichzeitigen Git-Prozessen, da es.graph-Dateien, die in der vorherigencommit-graph-chain-Datei enthalten waren, nicht ablaufen lässt. Sie werden bei einem späteren Lauf aufgrund der Ablaufverzögerung gelöscht. - prefetch
-
Die
prefetch-Aufgabe aktualisiert das Objektverzeichnis mit den neuesten Objekten aus allen registrierten Remote-Repositories. Für jedes Remote-Repository wird eingitfetch-Befehl ausgeführt. Die konfigurierte Refspec wird modifiziert, um alle angeforderten Refs innerhalb vonrefs/prefetch/zu platzieren. Tags werden ebenfalls nicht aktualisiert.Dies geschieht, um die Remote-Tracking-Branches nicht zu stören. Die Endbenutzer erwarten, dass diese Refs unverändert bleiben, es sei denn, sie initiieren einen Fetch. Mit der Prefech-Aufgabe werden die für einen späteren echten Fetch benötigten Objekte jedoch bereits abgerufen, wodurch der echte Fetch schneller wird. Im Idealfall wird dies lediglich zu einer Aktualisierung einer Reihe von Remote-Tracking-Branches ohne Objektübertragung.
Die Konfiguration
remote.<name>.skipFetchAllkann verwendet werden, um ein bestimmtes Remote-Repository vom Prefetch auszuschließen. - gc
-
Bereinigt unnötige Dateien und optimiert das lokale Repository. "GC" steht für "Garbage Collection", aber diese Aufgabe führt viele kleinere Aufgaben aus. Diese Aufgabe kann bei großen Repositories kostspielig sein, da sie alle Git-Objekte in eine einzige Pack-Datei neu verpackt. Sie kann auch in einigen Situationen störend sein, da sie veraltete Daten löscht. Weitere Details zur Garbage Collection in Git finden Sie unter git-gc[1].
- loose-objects
-
Der
loose-objects-Job bereinigt lose Objekte und packt sie in Pack-Dateien. Um Race Conditions mit gleichzeitigen Git-Befehlen zu vermeiden, folgt er einem zweistufigen Prozess. Erstens löscht er alle losen Objekte, die bereits in einer Pack-Datei vorhanden sind; gleichzeitige Git-Prozesse werden stattdessen die Pack-Datei für die Objekt-Daten untersuchen. Zweitens erstellt er eine neue Pack-Datei (beginnend mit "loose-"), die eine Charge von losen Objekten enthält.Die Chargengröße beträgt standardmäßig fünfzigtausend Objekte, um zu verhindern, dass der Job bei einem Repository mit vielen losen Objekten zu lange dauert. Verwenden Sie die Konfigurationsoption
maintenance.loose-objects.batchSize, um diese Größe anzupassen, einschließlich des Werts0, um das Limit aufzuheben.Die
gc-Aufgabe schreibt nicht erreichbare Objekte als lose Objekte, die von einem späteren Schritt bereinigt werden sollen, nur wenn sie nicht erneut in eine Pack-Datei aufgenommen werden; aus diesem Grund wird nicht empfohlen, die Aufgabenloose-objectsundgcgleichzeitig zu aktivieren. - incremental-repack
-
Der
incremental-repack-Job verpackt das Objektverzeichnis neu, indem er die Funktionmulti-pack-indexverwendet. Um Race Conditions mit gleichzeitigen Git-Befehlen zu vermeiden, folgt er einem zweistufigen Prozess. Erstens ruft ergitmulti-pack-indexexpireauf, um Pack-Dateien zu löschen, die nicht von dermulti-pack-index-Datei referenziert werden. Zweitens ruft ergitmulti-pack-indexrepackauf, um mehrere kleine Pack-Dateien auszuwählen und sie in eine größere neu zu verpacken. Anschließend aktualisiert er diemulti-pack-index-Einträge, die auf die kleinen Pack-Dateien verweisen, sodass sie auf die neue Pack-Datei verweisen. Dies bereitet die kleinen Pack-Dateien für die Löschung bei der nächsten Ausführung vongitmulti-pack-indexexpirevor. Die Auswahl der kleinen Pack-Dateien erfolgt so, dass die erwartete Größe der großen Pack-Datei mindestens der Chargengröße entspricht; siehe die Option--batch-sizefür den Unterbefehlrepackin git-multi-pack-index[1]. Die Standard-Chargengröße ist null, was ein Sonderfall ist, bei dem versucht wird, alle Pack-Dateien in eine einzige Pack-Datei zu verpacken. - pack-refs
-
Die
pack-refs-Aufgabe sammelt die losen Referenzdateien und fasst sie in einer einzigen Datei zusammen. Dies beschleunigt Operationen, die viele Referenzen durchlaufen müssen. Weitere Informationen finden Sie unter git-pack-refs[1]. - reflog-expire
-
Die
reflog-expire-Aufgabe löscht alle Einträge im Reflog, die älter als der Ablaufschwellenwert sind. Weitere Informationen finden Sie unter git-reflog[1]. - rerere-gc
-
Die
rerere-gc-Aufgabe ruft eine Garbage Collection für veraltete Einträge im rerere-Cache auf. Weitere Informationen finden Sie unter git-rerere[1]. - worktree-prune
-
Die
worktree-prune-Aufgabe löscht veraltete oder fehlerhafte Worktrees. Weitere Informationen finden Sie unter git-worktree[1].
OPTIONEN
- --auto
-
In Kombination mit dem Unterbefehl
runwerden Wartungsaufgaben nur ausgeführt, wenn bestimmte Schwellenwerte erreicht sind. Beispielsweise wird diegc-Aufgabe ausgeführt, wenn die Anzahl der losen Objekte die in dergc.auto-Konfiguration gespeicherte Anzahl überschreitet, oder wenn die Anzahl der Pack-Dateien diegc.autoPackLimit-Konfigurationseinstellung überschreitet. Nicht kompatibel mit der Option--schedule. - --schedule
-
In Kombination mit dem Unterbefehl
runwerden Wartungsaufgaben nur ausgeführt, wenn bestimmte zeitliche Bedingungen erfüllt sind, wie sie durch den Konfigurationswertmaintenance.<task>.schedulefür jede <task> festgelegt sind. Dieser Konfigurationswert gibt die Anzahl der Sekunden seit der letzten Ausführung der Aufgabe an, gemäß dem Konfigurationswertmaintenance.<task>.lastRun. Die getesteten Aufgaben sind diejenigen, die durch die Option(en)--task=<task> bereitgestellt werden, oder diejenigen, bei denenmaintenance.<task>.enabledauf wahr gesetzt ist. - --quiet
-
Berichtet keinen Fortschritt oder andere Informationen über
stderr. - --task=<task>
-
Wenn diese Option ein- oder mehrmals angegeben wird, werden nur die angegebenen Aufgaben in der angegebenen Reihenfolge ausgeführt. Wenn keine
--task=<task>-Argumente angegeben sind, werden nur die Aufgaben berücksichtigt, bei denenmaintenance.<task>.enabledauftruekonfiguriert ist. Die Liste der akzeptierten <task>-Werte finden Sie im Abschnitt AUFGABEN. - --scheduler=auto|crontab|systemd-timer|launchctl|schtasks
-
In Kombination mit dem Unterbefehl
startwird der Scheduler für die stündliche, tägliche und wöchentliche Ausführung vongitmaintenancerunangegeben. Mögliche Werte für <scheduler> sindauto,crontab(POSIX),systemd-timer(Linux),launchctl(macOS) undschtasks(Windows). Wennautoangegeben ist, wird der entsprechende plattformspezifische Scheduler verwendet; unter Linux wirdsystemd-timerverwendet, wenn verfügbar, andernfallscrontab. Standard istauto.
FEHLERBEHEBUNG
Der Befehl git maintenance wurde entwickelt, um Muster der Repository-Wartung zu vereinfachen und gleichzeitig die Wartezeit des Benutzers während Git-Befehlen zu minimieren. Eine Vielzahl von Konfigurationsoptionen steht zur Verfügung, um diesen Prozess anzupassen. Die Standard-Wartungsoptionen konzentrieren sich auf Operationen, die auch bei großen Repositories schnell abgeschlossen werden.
Benutzer können feststellen, dass geplante Wartungsaufgaben nicht so häufig wie beabsichtigt ausgeführt werden. Jeder git maintenance run-Befehl sperrt die Objektdatenbank des Repositorys, und dies verhindert, dass andere gleichzeitige git maintenance run-Befehle auf demselben Repository ausgeführt werden. Ohne diese Schutzmaßnahme könnten konkurrierende Prozesse das Repository in einem unvorhersehbaren Zustand hinterlassen.
Der Hintergrundwartungsplan führt git maintenance run-Prozesse auf stündlicher Basis aus. Jeder Lauf führt die "stündlichen" Aufgaben aus. Um Mitternacht führt dieser Prozess auch die "täglichen" Aufgaben aus. Um Mitternacht am ersten Tag der Woche führt dieser Prozess auch die "wöchentlichen" Aufgaben aus. Ein einzelner Prozess durchläuft jedes registrierte Repository und führt die geplanten Aufgaben für diese Frequenz aus. Die Prozesse werden pro Client auf eine zufällige Minute der Stunde terminiert, um die Last zu verteilen, die mehrere Clients erzeugen könnten (z. B. durch Prefetching). Abhängig von der Anzahl der registrierten Repositories und ihrer Größe kann dieser Prozess länger als eine Stunde dauern. In diesem Fall können mehrere git maintenance run-Befehle gleichzeitig auf demselben Repository ausgeführt werden und auf die Sperre der Objektdatenbank kollidieren. Dies führt dazu, dass eine der beiden Aufgaben nicht ausgeführt wird.
Wenn Sie feststellen, dass einige Wartungsfenster länger als eine Stunde dauern, sollten Sie die Komplexität Ihrer Wartungsaufgaben reduzieren. Beispielsweise ist die gc-Aufgabe wesentlich langsamer als die incremental-repack-Aufgabe. Dies geht jedoch auf Kosten einer etwas größeren Objektdatenbank. Erwägen Sie, teurere Aufgaben seltener auszuführen.
Expertenbenutzer können ihre eigenen Wartungsaufgaben mit einem anderen Zeitplan als dem über git maintenance start und Git-Konfigurationsoptionen verfügbaren Zeitplan planen. Diese Benutzer sollten sich der Sperre der Objektdatenbank bewusst sein und wissen, wie gleichzeitige git maintenance run-Befehle funktionieren. Darüber hinaus sollte der Befehl git gc nicht mit git maintenance run-Befehlen kombiniert werden. git gc modifiziert die Objektdatenbank, nimmt aber die Sperre nicht auf die gleiche Weise wie git maintenance run ein. Verwenden Sie, wenn möglich, git maintenance run --task=gc anstelle von git gc.
Die folgenden Abschnitte beschreiben die Mechanismen, die zur Ausführung der Hintergrundwartung durch git maintenance start eingerichtet werden, und wie diese angepasst werden können.
KOMMUNALE WARTUNG AUF POSIX-SYSTEMEN
Der Standardmechanismus zur Planung von Hintergrundaufgaben auf POSIX-Systemen ist cron(8). Dieses Werkzeug führt Befehle basierend auf einem vorgegebenen Zeitplan aus. Die aktuelle Liste der vom Benutzer geplanten Aufgaben finden Sie, indem Sie crontab -l ausführen. Der von git maintenance start geschriebene Zeitplan ist ähnlich wie dieser
# BEGIN GIT MAINTENANCE SCHEDULE # The following schedule was created by Git # Any edits made in this region might be # replaced in the future by a Git command. 0 1-23 * * * "/<path>/git" --exec-path="/<path>" for-each-repo --config=maintenance.repo maintenance run --schedule=hourly 0 0 * * 1-6 "/<path>/git" --exec-path="/<path>" for-each-repo --config=maintenance.repo maintenance run --schedule=daily 0 0 * * 0 "/<path>/git" --exec-path="/<path>" for-each-repo --config=maintenance.repo maintenance run --schedule=weekly # END GIT MAINTENANCE SCHEDULE
Die Kommentare werden als Region verwendet, um den von Git geschriebenen Zeitplan zu markieren. Alle Änderungen innerhalb dieser Region werden von git maintenance stop vollständig gelöscht oder von git maintenance start überschrieben.
Der crontab-Eintrag gibt den vollständigen Pfad zur git-Ausführungsdatei an, um sicherzustellen, dass der ausgeführte git-Befehl derselbe ist, mit dem git maintenance start aufgerufen wurde, unabhängig von PATH. Wenn derselbe Benutzer git maintenance start mit mehreren Git-Ausführungsdateien ausführt, wird nur die neueste Ausführungsdatei verwendet.
Diese Befehle verwenden git for-each-repo --config=maintenance.repo, um git maintenance run --schedule=<frequency> für jedes Repository auszuführen, das in der mehrwertigen Konfigurationsoption maintenance.repo aufgeführt ist. Diese werden typischerweise aus der benutzerspezifischen globalen Konfiguration geladen. Der git maintenance-Prozess bestimmt dann, welche Wartungsaufgaben für jedes Repository mit jeder <frequency> gemäß den Konfigurationsoptionen maintenance.<task>.schedule konfiguriert sind. Diese Werte werden aus den globalen oder Repository-Konfigurationswerten geladen.
Wenn die Konfigurationswerte nicht ausreichen, um Ihren gewünschten Hintergrundwartungsplan zu erreichen, können Sie Ihren eigenen Zeitplan erstellen. Wenn Sie crontab -e ausführen, wird ein Editor mit Ihrem benutzerspezifischen cron-Zeitplan geladen. In diesem Editor können Sie Ihre eigenen Zeitplanzeilen hinzufügen. Sie könnten damit beginnen, den oben aufgeführten Standardzeitplan anzupassen, oder Sie können die crontab(5)-Dokumentation für erweiterte Zeitplantechniken lesen. Bitte verwenden Sie die vollständigen Pfade und die --exec-path-Techniken aus dem Standardzeitplan, um sicherzustellen, dass Sie die richtigen Binärdateien in Ihrem Zeitplan ausführen.
KOMMUNALE WARTUNG AUF LINUX SYSTEMD-SYSTEMEN
Obwohl Linux cron unterstützt, kann cron je nach Distribution ein optionales Paket sein, das nicht unbedingt installiert ist. Auf modernen Linux-Distributionen werden Systemd-Timer es ersetzen.
Wenn Benutzer-Systemd-Timer verfügbar sind, werden sie als Ersatz für cron verwendet.
In diesem Fall erstellt git maintenance start Benutzer-Systemd-Timer-Units und startet die Timer. Die aktuelle Liste der vom Benutzer geplanten Aufgaben finden Sie, indem Sie systemctl --user list-timers ausführen. Die von git maintenance start geschriebenen Timer sind ähnlich wie diese
$ systemctl --user list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Thu 2021-04-29 19:00:00 CEST 42min left Thu 2021-04-29 18:00:11 CEST 17min ago git-maintenance@hourly.timer git-maintenance@hourly.service Fri 2021-04-30 00:00:00 CEST 5h 42min left Thu 2021-04-29 00:00:11 CEST 18h ago git-maintenance@daily.timer git-maintenance@daily.service Mon 2021-05-03 00:00:00 CEST 3 days left Mon 2021-04-26 00:00:11 CEST 3 days ago git-maintenance@weekly.timer git-maintenance@weekly.service
Für jede Option --schedule=<frequency> wird ein Timer registriert.
Die Definition der Systemd-Units kann in den folgenden Dateien inspiziert werden
~/.config/systemd/user/git-maintenance@.timer ~/.config/systemd/user/git-maintenance@.service ~/.config/systemd/user/timers.target.wants/git-maintenance@hourly.timer ~/.config/systemd/user/timers.target.wants/git-maintenance@daily.timer ~/.config/systemd/user/timers.target.wants/git-maintenance@weekly.timer
git maintenance start überschreibt diese Dateien und startet den Timer erneut mit systemctl --user. Daher sollten alle Anpassungen durch Erstellen einer Drop-in-Datei vorgenommen werden, d. h. einer Datei mit der Endung .conf im Verzeichnis ~/.config/systemd/user/git-maintenance@.service.d.
git maintenance stop stoppt die Benutzer-Systemd-Timer und löscht die oben genannten Dateien.
Weitere Details finden Sie unter systemd.timer(5).
KOMMUNALE WARTUNG AUF MACOS-SYSTEMEN
Obwohl macOS technisch cron unterstützt, erfordert die Verwendung von crontab -e erhöhte Berechtigungen, und der ausgeführte Prozess hat keinen vollständigen Benutzerkontext. Ohne vollständigen Benutzerkontext können Git und seine Anmeldeinformationshelfer nicht auf gespeicherte Anmeldeinformationen zugreifen, sodass einige Wartungsaufgaben nicht funktionsfähig sind.
Stattdessen interagiert git maintenance start mit dem launchctl-Tool, das die empfohlene Methode zur Planung von zeitgesteuerten Jobs unter macOS ist. Die Planung von Wartungsarbeiten über git maintenance (start|stop) erfordert einige launchctl-Funktionen, die nur in macOS 10.11 oder neuer verfügbar sind.
Ihre benutzerspezifischen geplanten Aufgaben werden als XML-formatierte .plist-Dateien in ~/Library/LaunchAgents/ gespeichert. Sie können die aktuell registrierten Aufgaben mit dem folgenden Befehl anzeigen
$ ls ~/Library/LaunchAgents/org.git-scm.git* org.git-scm.git.daily.plist org.git-scm.git.hourly.plist org.git-scm.git.weekly.plist
Für jede Option --schedule=<frequency> wird eine Aufgabe registriert. Um zu überprüfen, wie das XML-Format jeden Zeitplan beschreibt, öffnen Sie eine dieser .plist-Dateien in einem Editor und inspizieren Sie das Element <array> nach dem Element <key>StartCalendarInterval</key>.
git maintenance start überschreibt diese Dateien und registriert die Aufgaben erneut mit launchctl. Daher sollten alle Anpassungen durch Erstellen eigener .plist-Dateien mit eindeutigen Namen vorgenommen werden. Ebenso wird der Befehl git maintenance stop die Aufgaben mit launchctl abmelden und die .plist-Dateien löschen.
Weitere Informationen zu erweiterten Anpassungen Ihrer Hintergrundaufgaben finden Sie unter launchctl.plist(5).
KOMMUNALE WARTUNG AUF WINDOWS-SYSTEMEN
Windows unterstützt cron nicht und verfügt stattdessen über ein eigenes System zur Planung von Hintergrundaufgaben. Der Befehl git maintenance start verwendet den Befehl schtasks, um Aufgaben an dieses System zu übermitteln. Sie können alle Hintergrundaufgaben über die Task-Planer-Anwendung überprüfen. Die von Git hinzugefügten Aufgaben haben Namen der Form Git Maintenance (<frequency>). Die Task-Planer-GUI bietet Möglichkeiten, diese Aufgaben zu überprüfen, aber Sie können die Aufgaben auch in XML-Dateien exportieren und die Details dort anzeigen.
Beachten Sie, dass diese Hintergrundaufgaben, da Git eine Konsolenanwendung ist, ein Konsolenfenster erstellen, das für den aktuellen Benutzer sichtbar ist. Dies kann manuell geändert werden, indem die Option "Ausführen, auch wenn der Benutzer nicht angemeldet ist" im Task-Planer ausgewählt wird. Diese Änderung erfordert die Eingabe eines Passworts, weshalb git maintenance start diese Option nicht standardmäßig auswählt.
Wenn Sie die Hintergrundaufgaben anpassen möchten, benennen Sie die Aufgaben bitte um, damit zukünftige Aufrufe von git maintenance (start|stop) Ihre benutzerdefinierten Aufgaben nicht überschreiben.
KONFIGURATION
Alles unterhalb dieser Zeile in diesem Abschnitt wird selektiv aus der git-config[1]-Dokumentation übernommen. Der Inhalt ist derselbe wie dort zu finden.
- maintenance.auto
-
Diese boolesche Konfigurationsoption steuert, ob einige Befehle
gitmaintenancerun--autoausführen, nachdem sie ihre normale Arbeit erledigt haben. Standardmäßig ist sie auf true gesetzt. - maintenance.autoDetach
-
Viele Git-Befehle lösen nach dem Schreiben von Daten in das Repository eine automatische Wartung aus. Diese boolesche Konfigurationsoption steuert, ob diese automatische Wartung im Vordergrund stattfinden soll oder ob der Wartungsprozess sich abkoppeln und im Hintergrund weiterlaufen soll.
Wenn sie nicht gesetzt ist, wird der Wert von
gc.autoDetachals Fallback verwendet. Standardmäßig ist sie auf true gesetzt, wenn beide nicht gesetzt sind, was bedeutet, dass der Wartungsprozess sich abkoppelt. - maintenance.strategy
-
Diese String-Konfigurationsoption bietet eine Möglichkeit, eine von mehreren empfohlenen Strategien für die Repository-Wartung anzugeben. Dies beeinflusst, welche Aufgaben während
gitmaintenancerunausgeführt werden, vorausgesetzt, es werden keine--task=<task>-Argumente angegeben. Diese Einstellung beeinflusst sowohl manuelle Wartung, Automatikwartung als auch geplante Wartung. Die ausgeführten Aufgaben können je nach Wartungstyp unterschiedlich sein.Die Wartungsstrategie kann weiter angepasst werden, indem
maintenance.<task>.enabledundmaintenance.<task>.schedulegesetzt werden. Wenn diese Werte gesetzt sind, werden sie anstelle der vonmaintenance.strategybereitgestellten Standardwerte verwendet.Die möglichen Strategien sind
-
none: Diese Strategie bedeutet, dass überhaupt keine Aufgaben ausgeführt werden. Dies ist die Standardstrategie für geplante Wartung. -
gc: Diese Strategie führt diegc-Aufgabe aus. Dies ist die Standardstrategie für manuelle Wartung. -
geometric: Diese Strategie führt eine geometrische Neuverpackung von Pack-Dateien durch und hält Hilfsdatenstrukturen auf dem neuesten Stand. Die Strategie verfallen Daten im Reflog und entfernt nicht mehr auffindbare Worktrees. Wenn die geometrische Neuverpackungsstrategie entscheiden würde, eine Alles-in-eins-Neuverpackung durchzuführen, dann generiert die Strategie eine Cruft-Pack für alle nicht erreichbaren Objekte. Objekte, die bereits Teil einer Cruft-Pack sind, werden abgelaufen.Diese Neuverpackungsstrategie ist ein vollständiger Ersatz für die
gc-Strategie und wird für große Repositories empfohlen. -
incremental: Diese Einstellung optimiert die Durchführung kleiner Wartungsaktivitäten, die keine Daten löschen. Dies plant diegc-Aufgabe nicht, sondern führt dieprefetch- undcommit-graph-Aufgaben stündlich, dieloose-objects- undincremental-repack-Aufgaben täglich und diepack-refs-Aufgabe wöchentlich aus. Die manuelle Repository-Wartung verwendet diegc-Aufgabe.
-
- maintenance.<task>.enabled
-
Diese boolesche Konfigurationsoption steuert, ob die Wartungsaufgabe mit dem Namen <task> ausgeführt wird, wenn keine
--task-Option angitmaintenancerunübergeben wird. Diese Konfigurationswerte werden ignoriert, wenn eine--task-Option vorhanden ist. Standardmäßig ist nurmaintenance.gc.enabledauf true gesetzt. - maintenance.<task>.schedule
-
Diese Konfigurationsoption steuert, ob die angegebene <task> während eines Befehls
gitmaintenancerun--schedule=<frequency> ausgeführt wird oder nicht. Der Wert muss einer der folgenden sein: "hourly", "daily" oder "weekly". - maintenance.commit-graph.auto
-
Diese Integer-Konfigurationsoption steuert, wie oft die
commit-graph-Aufgabe im Rahmen vongitmaintenancerun--autoausgeführt werden soll. Wenn Null, wird diecommit-graph-Aufgabe nicht mit der Option--autoausgeführt. Ein negativer Wert erzwingt die einmalige Ausführung der Aufgabe. Andernfalls bedeutet ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der erreichbaren Commits, die sich nicht in der Commit-Graph-Datei befinden, mindestens dem Wert vonmaintenance.commit-graph.autoentspricht. Der Standardwert ist 100. - maintenance.loose-objects.auto
-
Diese Integer-Konfigurationsoption steuert, wie oft die
loose-objects-Aufgabe im Rahmen vongitmaintenancerun--autoausgeführt werden soll. Wenn Null, wird dieloose-objects-Aufgabe nicht mit der Option--autoausgeführt. Ein negativer Wert erzwingt die einmalige Ausführung der Aufgabe. Andernfalls bedeutet ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der losen Objekte mindestens dem Wert vonmaintenance.loose-objects.autoentspricht. Der Standardwert ist 100. - maintenance.loose-objects.batchSize
-
Diese Integer-Konfigurationsoption steuert die maximale Anzahl loser Objekte, die während der
loose-objects-Aufgabe in eine Pack-Datei geschrieben werden. Der Standardwert ist fünfzigtausend. Verwenden Sie den Wert0, um kein Limit anzugeben. - maintenance.incremental-repack.auto
-
Diese Integer-Konfigurationsoption steuert, wie oft die Aufgabe
incremental-repackals Teil vongitmaintenancerun--autoausgeführt werden soll. Wenn der Wert Null ist, wird die Aufgabeincremental-repacknicht mit der Option--autoausgeführt. Ein negativer Wert erzwingt die Ausführung der Aufgabe bei jedem Aufruf. Andernfalls bedeutet ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der Packdateien, die sich nicht im Multi-Pack-Index befinden, mindestens dem Wert vonmaintenance.incremental-repack.autoentspricht. Der Standardwert ist 10. - maintenance.geometric-repack.auto
-
Diese Integer-Konfigurationsoption steuert, wie oft die Aufgabe
geometric-repackals Teil vongitmaintenancerun--autoausgeführt werden soll. Wenn der Wert Null ist, wird die Aufgabegeometric-repacknicht mit der Option--autoausgeführt. Ein negativer Wert erzwingt die Ausführung der Aufgabe bei jedem Aufruf. Andernfalls bedeutet ein positiver Wert, dass der Befehl entweder ausgeführt werden soll, wenn Packdateien zusammengeführt werden müssen, um die geometrische Progression beizubehalten, oder wenn mindestens so viele lose Objekte vorhanden sind, die in eine neue Packdatei geschrieben würden. Der Standardwert ist 100. - maintenance.geometric-repack.splitFactor
-
Diese Integer-Konfigurationsoption steuert den Faktor, der für die geometrische Folge verwendet wird. Weitere Details finden Sie in der Option
--geometric=in git-repack[1]. Der Standardwert ist2. - maintenance.reflog-expire.auto
-
Diese Integer-Konfigurationsoption steuert, wie oft die Aufgabe
reflog-expireals Teil vongitmaintenancerun--autoausgeführt werden soll. Wenn der Wert Null ist, wird die Aufgabereflog-expirenicht mit der Option--autoausgeführt. Ein negativer Wert erzwingt die Ausführung der Aufgabe bei jedem Aufruf. Andernfalls bedeutet ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der abgelaufenen Reflog-Einträge im "HEAD"-Reflog mindestens dem Wert vonmaintenance.loose-objects.autoentspricht. Der Standardwert ist 100. - maintenance.rerere-gc.auto
-
Diese Integer-Konfigurationsoption steuert, wie oft die Aufgabe
rerere-gcals Teil vongitmaintenancerun--autoausgeführt werden soll. Wenn der Wert Null ist, wird die Aufgabererere-gcnicht mit der Option--autoausgeführt. Ein negativer Wert erzwingt die Ausführung der Aufgabe bei jedem Aufruf. Andernfalls bedeutet jeder positive Wert, dass der Befehl ausgeführt wird, wenn das Verzeichnis "rr-cache" existiert und mindestens einen Eintrag hat, unabhängig davon, ob dieser veraltet ist oder nicht. Diese Heuristik kann in Zukunft verfeinert werden. Der Standardwert ist 1. - maintenance.worktree-prune.auto
-
Diese Integer-Konfigurationsoption steuert, wie oft die Aufgabe
worktree-pruneals Teil vongitmaintenancerun--autoausgeführt werden soll. Wenn der Wert Null ist, wird die Aufgabeworktree-prunenicht mit der Option--autoausgeführt. Ein negativer Wert erzwingt die Ausführung der Aufgabe bei jedem Aufruf. Andernfalls bedeutet ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der bereinigbaren Arbeitsverzeichnisse den Wert überschreitet. Der Standardwert ist 1.
GIT
Teil der git[1] Suite