Wer seinen Quelltexte und Konfigurationen mit git verwaltet, hat in der Regel schnell eine große Anzahl an Branches/Zweigen angelegt. Viele davon sind nutzlos und überflüssig, weil diese bereits in den Hauptzweig übernommen wurden. Hat man zudem noch viele fleißige Kollegen, kommt es schon vor, dass ein git branch -a mehrere Seiten Ausgabe produziert und man ohne grep & Co. keinen Überblick mehr hat.
git liefert natürlich ein Kommando, welches einem alle bereits zusammengeführte Zweige anzeigt, und somit kann man schnell und einfach alle nicht mehr benötigten Zweige löschen.
Lokal angelegte Zweige werden wie folgt gelöscht:
git branch --merged master | grep -vE "(\*|testing|development)" | xargs -n1 git branch -d
In diesem Beispiel werden einzelne Zweige mit grep ausgefiltert, da ich testing und development nicht löschen will. Zudem kann der aktuelle Zweig * nicht gelöscht werden, weshalb dieser ebenfalls aus der Liste entfernt wird.
Für remote-Zweige müssen die Befehle etwas angepasst werden:
git branch -r --merge master | grep -vE "(origin\/master|origin\/testing)" | sed 's/ *origin\///' | xargs -I% git push origin :%
Zwei Befehle und schon sind die git-Zweige aufgeräumt. Mit einem git-Hook an der richtigen Stelle kann man diese auch noch automatisch ausführen.
0 Kommentare