Git führt die Speicherbereinigung automatisch aus :
• Wenn sich zu viele lose Objekte im Repository befinden
• Wenn ein Push in ein Remote-Repository erfolgt
• Nach einigen Befehlen, die möglicherweise viele lose Objekte einführen
• Wenn einige Befehle wie git reflog explizit ablaufen, fordern Sie sie explizit an
Und schließlich erfolgt die Speicherbereinigung, wenn Sie sie explizit mit dem Befehl git gc anfordern. Aber wann sollte das sein? Es gibt keine solide Antwort auf diese Frage, aber es gibt einige gute Ratschläge und bewährte Verfahren.
Sie sollten in einigen Situationen in Betracht ziehen, git gc manuell auszuführen:
• Wenn Sie gerade einen Git-Filter-Zweig abgeschlossen haben. Denken Sie daran, dass der Filterzweig viele Commits neu schreibt, neue einführt und die alten auf einem Verweis belässt, der entfernt werden sollte, wenn Sie mit den Ergebnissen zufrieden sind. Alle toten Objekte (auf die nicht mehr verwiesen wird, da Sie gerade den einen Verweis entfernt haben, der auf sie verweist) sollten über die Speicherbereinigung entfernt werden.
• Nach einigen Befehlen, die möglicherweise viele lose Objekte einführen. Dies kann beispielsweise ein großer Rebase-Aufwand sein.
Und auf der anderen Seite, wann sollten Sie sich vor der Müllabfuhr in Acht nehmen?
• Wenn es verwaiste Refs gibt, die Sie möglicherweise wiederherstellen möchten
• Im Kontext von git rerere müssen Sie die Auflösungen nicht für immer speichern
• Wenn nur Tags und Zweige ausreichen, um Git zu veranlassen, ein Commit dauerhaft beizubehalten
• Im Zusammenhang mit FETCH_HEAD-Abrufen (URL-direkte Abfragen über Git-Fetch), da diese sofort einer Speicherbereinigung unterliegen