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
-d
in 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-prod
in 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-ref
iteriert über alle Referenzen im Repo. Derformat
-String'%refname:short'
extrahiert einen kurzen Ref-Namen aus den Iterables und dierefs/heads
zeigen auf ihreheads
.Die Ausgabe von
for-each-ref
übergeben wir mit der Pipe|
an den Befehlgrep
Operator. -
Der Befehl
grep
durchsucht die ihm übergebenen Referenzköpfe, um sie mit der Ausdruckszeichenfolgemaster\|main\|develop
abzugleichen. Dies umfasst verschiedene Namen für Ihrenmaster
-Zweig – Sie haben ihn vielleichtmain
oderdevelop
genannt. -
Die Option
-v
im Befehlgrep
dient 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 demmaster
ausgewählt. -
Schließlich nimmt der Befehl
xargs
alle diese ausgewählten Branches und übergibt sie als Argumente an den Befehlgit branch -D
. Dasgit branch -D
ist 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.