Lokale Zweige in Git beschneiden

Ashok Chapagai 19 Dezember 2022
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 Status gone 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 Befehl git 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
Ashok Chapagai avatar Ashok Chapagai avatar

Ashok is an avid learner and senior software engineer with a keen interest in cyber security. He loves articulating his experience with words to wider audience.

LinkedIn GitHub

Verwandter Artikel - Git Prune