Alle lokalen Verzweigungen in Git löschen
-
Detailliertes Skript zum Löschen aller lokalen Branches in Git außer
master -
Ändern Sie das Skript, um nur die zusammengeführten Branches mit der Option
-din Git zu löschen - Ein einfacheres Skript zum Löschen aller lokalen Zweige in Git verwenden
-
Ändern Sie das Skript, um lokale Zweige mit Namen zu löschen, die
masterähnlich sind, wiemaster-prodin Git - ein kurzes Skript zum Löschen aller lokalen Branches in Git
- Einzeiliger Hard Delete-Befehl zum Löschen aller lokalen Branches in Git
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.
-
Das
for-each-refiteriert über alle Referenzen im Repo. Derformat-String'%refname:short'extrahiert einen kurzen Ref-Namen aus den Iterables und dierefs/headszeigen auf ihreheads.Die Ausgabe von
for-each-refübergeben wir mit der Pipe|an den BefehlgrepOperator. -
Der Befehl
grepdurchsucht die ihm übergebenen Referenzköpfe, um sie mit der Ausdruckszeichenfolgemaster\|main\|developabzugleichen. Dies umfasst verschiedene Namen für Ihrenmaster-Zweig – Sie haben ihn vielleichtmainoderdevelopgenannt. -
Die Option
-vim Befehlgrepdient der invertierten Auswahl. Daher werden hier nur die Branches ausgewählt, die nicht mit dem Ausdruckmaster\|main\|developübereinstimmen – im Wesentlichen werden alle lokalen Branches außer demmasterausgewählt. -
Schließlich nimmt der Befehl
xargsalle diese ausgewählten Branches und übergibt sie als Argumente an den Befehlgit branch -D. Dasgit branch -Dist der Befehl, um alle als Argumente übergebenen Branches zu 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

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

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.

Ä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


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.

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.
