Aufräumen von Git-Repositories mit dem Befehl Git Prune
-
Verwenden Sie den Befehl
git prune
-
Unterschied zwischen
git prune
,git fetch --prune
undgit remote prune
In diesem Artikel werden wir den Befehl git prune
und den Zweck, dem er dient, besprechen. Wir sind uns bewusst, dass Git äußerst sorgfältig mit unseren Daten umgeht.
Wenn wir Daten wie Commits löschen, verliert Git sie nicht so leicht. Dies führt zu einer Anhäufung veralteter Daten in unseren Maschinen.
Hier kommt der Befehl git prune
ins Spiel.
Wir können vom Befehl git prune
als Haushaltsdienstprogramm in Git sprechen, mit dem wir verwaiste oder unerreichbare Git-Objekte bereinigen. Wenn wir von nicht erreichbaren Objekten sprechen, sind dies die Objekte in unserem Repository, auf die die aktuellen Referenzen nicht zugreifen können.
Ein gutes Beispiel ist, wenn wir mit dem Befehl git reset <Commit ID>
zu einem früheren Commit zurückkehren. Git speichert den gelöschten Commit als baumelndes Objekt.
Wir verwenden den Befehl git prune
, um solche Daten zu löschen.
Verwenden Sie den Befehl git prune
Der Befehl git prune
hat mehrere nützliche Optionen wie unten.
$ git prune --dry-run
Wir führen den obigen Befehl aus, um die Ausgabe des Befehls zu erhalten. Es führt das prune
nicht aus.
$ git prune --verbose
Der obige Befehl zeigt uns alle Aktionen und die zugehörigen Objekte.
$ git prune --progress
Wir verwenden den obigen Befehl, um den Fortschritt des git prune
zu überprüfen.
$ git prune --expire <time>
Wir verwenden den obigen Befehl, um die Objekte zu löschen, die älter als die angegebene Zeit (<time>
) sind.
Um das Konzept besser zu verstehen, schauen wir uns ein praktisches Beispiel an. Lassen Sie uns den Befehl git log
ausführen, um den Commit-Verlauf in unserem lokalen Repository zu überprüfen.
$ git log --oneline
Lassen Sie uns den Befehl git reset
verwenden, um einen Commit zurückzusetzen, sodass unser HEAD
beim Sixth Update
ist.
$ git reset --hard 27bd68b
HEAD is now at 27bd68b Sixth Update
Lassen Sie uns versuchen, den gelöschten Commit zu finden.
$ git fsck --lost-found
Der gelöschte Commit ist der erste; können wir mit den ersten sieben Zeichen bestätigen.
Bevor wir den Befehl git prune
ausführen, müssen wir ein reflog
ausführen, das Einträge verfallen lässt, die älter als now
sind.
$ git reflog expire --expire=now --expire-unreachable=now --all
Es ist ratsam, den Befehl trocken auszuführen
, um zu sehen, welche Änderungen auftreten.
$ git prune --dry-run
Wir können jetzt den Befehl prune
ausführen.
$ git prune --verbose --progress --expire=now
Lassen Sie uns überprüfen, ob die baumelnden Commits noch in unserem Repository vorhanden sind.
$ git fsck --lost-found
Unterschied zwischen git prune
, git fetch --prune
und git remote prune
Die Befehle git fetch --prune
und git remote prune
haben ähnliche Funktionen. Wir verwenden sie, um die Verweise auf Branches zu löschen, die im Remote-Repository gelöscht werden.
Es ist praktisch, wenn Sie als Team arbeiten und sich von entfernten Zweigen befreien möchten, die nach dem Zusammenführen mit dem Hauptzweig gelöscht werden.
Der Befehl git fetch --prune
ist eine Kombination aus:
$ git fetch --all && git remote prune
Es wird von unserem Remote-Repo abgerufen, bevor das prune
gestartet wird. Der grundlegende Befehl git prune
löscht lokale Objekte, wie bereits erwähnt.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn