Wenn man über längere Zeit mit Feature-Branches arbeitet und nicht jeden Branch sofort nach der Fertigstellung schließt, wird es irgendwann unübersichtlich im Repository. Ich zeige heute, wie man dann aufräumen kann.
Auf dem Branch master
ausgeführt werden alle Branches, die bereits vollständig
in master
enthalten sind, in den Namensraum archive/
verschoben, d. h. aus
old-feature
wird ` archive/old-feature`.
git branch --merged | grep -v -e "* " -e " archive/" | xargs -I NAME git branch -m NAME archive/NAME
Ein Beispiel: Im Repository sind einige Branches bereits abgeschlossen
und wurden in master
gemerged, während andere noch offene Änderungen haben.
repo $ git checkout master repo $ git branch --merged branch-a branch-b branch-c * master repo $ git branch --no-merged branch-d branch-e
Folgender Befehl wird ausgeführt:
repo $ git branch --merged | grep -v -e "* " -e " archive/" | xargs -I NAME git branch -m NAME archive/NAME repo $ git branch archive/branch-a archive/branch-b archive/branch-c branch-d branch-e * master
Es passieren 3 Dinge:
Mit branch --merged
werden nur Branches angezeigt, die bereits
vollständig im aktuellen Branch enthalten sind.
Das grep
-Statement filtert den aktuellen Branch und die bereits archivierter Branches heraus.
Mit branch -m
werden die Branches verschoben (umbenannt).
xargs -I
sorgt dafür, dass der Befehl für jeden Branch aus Schritt 2. einmal ausgeführt wird.
Falls Sie lieber reinen Tisch haben wollen, können Sie die Branches natürlich auch löschen.
repo $ git branch --merged | grep -v -e "* " | xargs -I NAME git branch -D NAME Deleted branch archive/branch-a (was d4d58e2). Deleted branch archive/branch-b (was 457bfed). Deleted branch archive/branch-c (was 54fcb38).