Aufräumen von Git-Repositories mit dem Befehl Git Prune
- Verwenden Sie den Befehl
git prune - Unterschied zwischen
git prune,git fetch --pruneundgit 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