Testen von abgelaufenen Reflog-Einträgen
In diesem Schritt werden wir lernen, wie Git das Reflog verwaltet und wie Einträge schließlich ablaufen können. Standardmäßig behält Git Reflog-Einträge für eine bestimmte Zeitspanne. Erreichbare Einträge (die von einem Branch oder Tag referenziert werden) werden 90 Tage lang aufbewahrt, während nicht erreichbare Einträge (die von nichts referenziert werden) 30 Tage lang aufbewahrt werden. Nach diesen Zeiträumen kann der Garbage-Collection-Prozess von Git diese Einträge entfernen.
Da wir in diesem Lab nicht die Zeitablaufsimulation durchführen können, um zu sehen, wie Einträge natürlich ablaufen, können wir manuell den Garbage-Collection-Prozess von Git mit einer bestimmten Option auslösen, um alte Reflog-Einträge zu bereinigen (zu entfernen).
Wichtig: Das Ausführen dieses Befehls wird ältere Reflog-Einträge basierend auf den konfigurierten Ablaufzeiten entfernen. In der Praxis würden Sie normalerweise diesen Befehl nicht manuell ausführen, es sei denn, Sie haben einen bestimmten Grund, alte Reflog-Einträge zu bereinigen.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis my-time-machine
befinden:
cd ~/project/my-time-machine
Führen wir nun den Garbage-Collection-Befehl mit der Option zum Bereinigen von Reflog-Einträgen aus. Wir werden eine sehr kurze Ablaufzeit für nicht erreichbare Einträge festlegen, um die Wirkung zu demonstrieren.
git gc --prune=now --aggressive
Dieser Befehl teilt Git, sofort die Garbage Collection auszuführen (--prune=now
) und aggressiv (--aggressive
) lose Objekte zu bereinigen und nicht erreichbare Reflog-Einträge zu entfernen.
Nachdem der Befehl ausgeführt wurde, überprüfen wir erneut das Reflog:
git reflog
Es ist möglich, dass einige ältere Einträge, insbesondere wenn Sie vor diesem Lab mehr Operationen durchgeführt haben, fehlen. In unserem einfachen Repository mit nur zwei Reflog-Einträgen können beide noch vorhanden sein, da sie relativ neu sind und einer von HEAD
und master
noch erreichbar ist. Wenn Sie jedoch eine komplexere Historie mit nicht erreichbaren Commits hätten, würde dieser Befehl sie basierend auf den Ablaufeinstellungen bereinigen.
Der wichtigste Punkt hier ist, dass das Reflog nicht für immer dauerhaft ist. Git bereinigt alte Einträge, um Speicherplatz zu sparen. Für typische Entwicklungsworkflows sind die Standard-Ablaufzeiten in der Regel ausreichend, um von den meisten Fehlern wiederherzustellen.
Das Verständnis, dass Reflog-Einträge ein Ablaufdatum haben, hilft Ihnen zu verstehen, wie wichtig es ist, sinnvolle Commits und Branches zu erstellen, um wichtige Punkte in der Projektgeschichte zu bewahren.