Lokale Zweige in Git beschneiden
Angenommen, Ihr Projekt hat viele Zweige, die auf dem lokalen Computer erstellt wurden, aber nicht im Remote-Repository vorhanden sind. Sie können ganz einfach alle lokalen Zweige entfernen, die nicht mit dem Remote-Repository synchronisiert sind, aber bevor Sie dies tun, möchten Sie vielleicht alle Zweige überprüfen, die auf Ihrem lokalen Computer verfügbar sind, Sie können git branch
ausführen.
Um nun alle entfernten Zweige aufzulisten, können Sie den Befehl git branch -r
verwenden. Um beide Ergebnisse in einem einzigen Befehl zu erzielen, können Sie den Befehl git branch -a
verwenden. Wenn die Zweige bestätigt sind, können Sie mit dem Rest des Artikels fortfahren.
Lokale Branches in Git entfernen (Prune)
Sie können den folgenden Befehl problemlos ausführen, um Tracking-Zweige zu löschen, die sich nicht im Remote-Repository befinden.
git remote prune origin
Der obige Befehl löscht Tracking-Zweige, die sich nicht im Remote-Repository befinden, der lokale Zweig wird jedoch noch nicht gelöscht. Um lokale Zweige tatsächlich zu löschen, müssen Sie möglicherweise zusätzliche Schritte ausführen, die unten erläutert werden.
-
Alle Zweige mit ausführlicher Ausgabe auflisten,
git branch -vv
Jetzt leiten Sie die Ausgabe an grep für
origin/.* : gone]
weiter, da der Statusgone
auf die Zweige gesetzt wird, die nicht im Remote-Repository verfügbar sind, aber auf dem lokalen Computer verfügbar sind.grep 'origin/.*: gone]'
-
Auch hier leiten Sie die Ausgabe wie unten an
awk
weiter (was ein sehr gutes Werkzeug zum Formatieren ist).awk '{print $1}'
-
Schließlich möchten Sie die Ausgabe an
xargs
leiten, was verwendet werden kann, wenn Sie die Ausgabe von einem Befehl nehmen und als Argument für einen anderen verwenden müssen. Sie dürfen die Ausgabe von Schritt 2 nicht an den Befehlgit branch -d
übergeben, um die lokalen Zweige zu löschen.xargs git branch -d
Daher ist der letzte zweizeilige Befehl zum Beschneiden und Löschen aller lokalen Zweige, die nicht im Remote-Repository verfügbar sind, unten.
git remote prune origin
Nachdem Sie den obigen Befehl ausgeführt haben, möchten Sie möglicherweise den folgenden Befehl ausführen, um die Löschung der lokalen Branches zu erreichen, die nicht im Remote-Repository verfügbar sind.
git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d