Alle lokalen Verzweigungen in Git löschen

Ankit Raj Goyal 30 Januar 2023
  1. Detailliertes Skript zum Löschen aller lokalen Branches in Git außer master
  2. Ändern Sie das Skript, um nur die zusammengeführten Branches mit der Option -d in Git zu löschen
  3. Ein einfacheres Skript zum Löschen aller lokalen Zweige in Git verwenden
  4. Ändern Sie das Skript, um lokale Zweige mit Namen zu löschen, die master ähnlich sind, wie master-prod in Git
  5. ein kurzes Skript zum Löschen aller lokalen Branches in Git
  6. Einzeiliger Hard Delete-Befehl zum Löschen aller lokalen Branches in Git
Alle lokalen Verzweigungen in Git löschen

Alte lokale Zweige überladen Ihr lokales Repository, bieten aber keinen weiteren Wert. Mit Hilfe dieses Tutorials können Sie alle lokalen Branches auf einmal löschen.

Wir verwenden Befehle wie grep, xargs und for-each-ref, um Skripte für diese Aufgabe zu schreiben. Wir zeigen verschiedene Optionen für unterschiedliche Anwendungsfälle.

Wir bieten auch einen einzeiligen schnellen Hack zum Löschen aller lokalen Branches am Ende des Tutorials.

Detailliertes Skript zum Löschen aller lokalen Branches in Git außer master

Wir schreiben das folgende Skript, um mit Git alle lokalen Branches außer dem master-Branch zu löschen.

git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -D

Dieses Skript löscht alle lokalen Zweige mit Ausnahme des master-Zweigs, einschließlich der nicht zusammengeführten Zweige.

Lassen Sie uns dieses Skript aufschlüsseln, um zu sehen, wie es funktioniert.

  1. Das for-each-ref iteriert über alle Referenzen im Repo. Der format-String '%refname:short' extrahiert einen kurzen Ref-Namen aus den Iterables und die refs/heads zeigen auf ihre heads.

    Die Ausgabe von for-each-ref übergeben wir mit der Pipe | an den Befehl grep Operator.

  2. Der Befehl grep durchsucht die ihm übergebenen Referenzköpfe, um sie mit der Ausdruckszeichenfolge master\|main\|develop abzugleichen. Dies umfasst verschiedene Namen für Ihren master-Zweig – Sie haben ihn vielleicht main oder develop genannt.

  3. Die Option -v im Befehl grep dient der invertierten Auswahl. Daher werden hier nur die Branches ausgewählt, die nicht mit dem Ausdruck master\|main\|develop übereinstimmen – im Wesentlichen werden alle lokalen Branches außer dem master ausgewählt.

  4. Schließlich nimmt der Befehl xargs alle diese ausgewählten Branches und übergibt sie als Argumente an den Befehl git branch -D. Das git branch -D ist der Befehl, um alle als Argumente übergebenen Branches zu löschen.

detailliertes Skript alle lokalen löschen

Ändern Sie das Skript, um nur die zusammengeführten Branches mit der Option -d in Git zu löschen

Wir können das obige Skript so ändern, dass nur die zusammengeführten Branches gelöscht werden. Wir ersetzen die Option -D am Ende durch die Option -d.

Das -d ist eine Soft-Delete-Option und entfernt nur die zusammengeführten Branches.

git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -d

fusionierte nicht fusionierte Filialen

Wir sehen, dass first_branch zusammengeführt wird, aber second_branch nicht zusammengeführt wird.

nur zusammengeführte Zweige löschen

Unser modifiziertes Skript löscht nur den zusammengeführten first_branch, lässt aber den nicht zusammengeführten second_branch.

Ein einfacheres Skript zum Löschen aller lokalen Zweige in Git verwenden

Einige Leute finden das obige Skript möglicherweise zu komplex und übertrieben. Wir können ein einfacheres Skript verwenden, um die gleiche Aufgabe zu erledigen.

git branch | grep -v "master\|main\|develop" | xargs git branch -D

Dieses Skript ersetzt den komplexen for-each-ref durch den einfachen git branch-Befehl.

Bitte beachten Sie, dass Git die Verwendung des git branch in Skripten nicht empfiehlt. Aber wir können manchmal von der Best Practice abweichen, um eine schnelle Lösung zu finden.

kleineres Skript lösche alle lokalen

Ändern Sie das Skript, um lokale Zweige mit Namen zu löschen, die master ähnlich sind, wie master-prod in Git

Manchmal kann Ihr Repository Zweige mit Namen ähnlich wie master haben. Beispielsweise könnten einige Ihrer Branches Namen wie master-prod oder master-draft haben.

Wir können den regulären Ausdruck in unserem Skript von "master\|main\|develop" zu "master$\|main$\|develop$" ändern, um diese Funktionalität zu erreichen.

git branch | grep -v "master$\|main$\|develop$" | xargs git branch -D

Branche ähnlicher Name Masterprod

Zweig löschen ähnlicher Name master prod

ein kurzes Skript zum Löschen aller lokalen Branches in Git

Wir können clevere reguläre Ausdrücke an grep übergeben, um unser Skript weiter zu verkürzen.

git checkout master
git branch | grep -v "^*" |xargs git branch -D

Der Ausdruck "^*" bedeutet alle Verzweigungen beginnend (^) mit der aktuellen Verzweigung (*). Wir haben zuerst git checkout master gemacht, also ist unser aktueller Zweig master.

Damit filtert -v "^*" unseren aktuellen Branch, den master heraus und löscht alle anderen lokalen Branches.

Verknüpfung lokale Zweige löschen

Einzeiliger Hard Delete-Befehl zum Löschen aller lokalen Branches in Git

Schließlich zeigen wir Ihnen, wie versprochen, einen einzeiligen Hard-Delete-Befehl, um alle lokalen Branches in Git zu löschen.

git branch -D $(git branch)

Dieser Befehl löscht alle Zweige außer dem, auf dem Sie sich gerade befinden.

einzelne Zeile hart löschen

Verwandter Artikel - Git Branch