Aufräumen von Git-Repositories mit dem Befehl Git Prune

John Wachira 15 Februar 2024
  1. Verwenden Sie den Befehl git prune
  2. Unterschied zwischen git prune, git fetch --prune und git remote prune
Aufräumen von Git-Repositories mit dem Befehl Git 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

Commit-Verlauf

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

Baumeln

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

Probelauf

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

Finale

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 Wachira avatar John Wachira avatar

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

Verwandter Artikel - Git Prune