Aufräumen von Branches in git

Da das Branchen und Mergen bei git so wunderbar einfach ist, bietet es sich an deutlich intensiver mit Branches im Projektalltag zu arbeiten, als man das vielleicht von anderen Quellcodesystemen gewohnt ist. Hier hat sich das sogenannte Feature-Branching etabliert.

Eine Herausforderung im Projektalltag ist aber die damit einhergehende Menge an Branches, die sich in kürzester Zeit in einem Repository ansammeln.

lokale GIT Branches
lokale GIT Branches

Da hilft eigentlich nur das konsequente Löschen von Branches. So bietet es sich an, dass wenn ein Feature fertiggestellt ist und der Code aus dem Feature-Branch in den Dev-Branch oder den Master-Branch überführt wurde, diesen Branch zu löschen. Schließlich war Sinn und Zweck des Branches ja auch nur das Erstellen dieses einen Features.

In VSTS lassen sich Branches recht einfach löschen. Somit wird die Übersicht hier schnell wieder hergestellt.

lokale GIT Branches
Remote GIT Branches in VSTS

Aber wie verhält sich das auf meinem Arbeitsplatz? Visual Studio zeigt mit noch alle Branches an, auch wenn diese im Ziel bereits gelöscht wurden (mir werden natürlich nur Branches angezeigt, die ich zuvor schon mal ausgecheckt hatte).

Natürlich gibt es auch dafür eine Lösung. Schnell mal eine Kommandozeile (am besten die GIT Bash) geöffnet und los geht’s.

git remote prune origin

Sorgt dafür, dass remote Branches aus der „origin“ entfernt werden. Wurde der Branch auch im lokalen Repository angelegt (weil er in der Vergangenheit schon mal ausgecheckt wurde), so wird die Remote-Referenz aus diesem Branch entfernt.

Mit git branch -vv kann man sich alle Branches anzeigen lassen, inkl. deren Remote-Referenzen (sofern vorhanden). Hier erkennt man auch die Branches, deren remote-branch nicht mehr existiert.

Mit git branch -vv | grep 'origin/.*: gone]' kann ich diese Liste filtern. Wenn ich nun den Namen des Branches mit awk '{print $1}' noch extrahiere, kann ich diesen Branch mit git branch -d diesen dann auch löschen. Wenn man das alles zusammenfügt ergibt sich

git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d

Zusammen mit dem prune kann ich also mit diesen beiden Zeilen mit lokales Git Repository ebenfalls aufräumen und mit der Ansicht im VSTS in Einklang bringen.


Nach oben scrollen