Es gibt keine einfache Möglichkeit, dies zu automatisieren, zumindest nicht vollständig. (Einige Sonderfälle könnten behandelt werden.) Stattdessen ist es das Beste, diese Verzweigungslöschung an die Person zu delegieren, deren Pull-Request zusammengeführt wurde. Dafür gibt es mehrere gute Gründe:
Sie sind die einzigen, die sicher sein können, dass die Zusammenführung korrekt ausgeführt wurde.
Angenommen, zum Beispiel, dass, um eine Serie von sechs Commits Squash-fusionieren, die Person, die die Squash-merge tat musste, oder wählte in einer Linie oder zwei, ein paar Zeichen irgendwo ändern aus irgendeinem Grund gut oder schlecht. Diese Zeile oder zwei bedeutet, dass die Gesamtänderung im endgültigen Commit anders ist von der Summe der sechs Änderungen in den sechs Commits.
Aber ist das Gesamtergebnis korrekt? Wenn Sie die Änderungen nicht selbst vorgenommen haben, wie werden Sie das wissen?
Sie sind die einzigen, die wissen, ob sie beabsichtigen, auf diesem Zweig zu entwickeln.
Nur weil die sechs Commits auf feature/tall
wurden in eine zerquetschte commit hinzugefügt devel
bedeutet nicht, dass feature/tall
ist alles getan. Sie können mehrere weitere Commits hinzufügen. Sie möchten vielleicht erneut feature/tall
auf devel
zurücksetzen, indem Sie die sechs gedrückten Commits zugunsten des einen Six-Commit-Squash löschen, aber weitere drei Commits behalten, die sie hinzufügen wollen.
Es gibt wahrscheinlich einige weitere Fälle. Diese können alle selten sein; Sie kommen vielleicht niemals in Ihrem Projekt vor; aber der Punkt hier ist, dass Zweig feature/tall
ist ihre Zweig, nicht Ihre Zweig, so dass sie - wer auch immer sie sind - sollte diejenigen sein, die es löschen, wenn es fertig ist.
Beachten Sie, dass wenn Sie feature/tall
abholen Sie Ihre eigenen Git haben, benennen Sie es in origin/feature/tall
(vorausgesetzt, Ihre Fernbedienung heißt origin
). Wenn Sie damit experimentieren und git checkout feature/tall
, erstellt Ihr Git eine Kopie für Sie. Sobald sie feature/tall
löschen und Sie git fetch origin --prune
ausführen, löscht Ihr Git Ihre origin/feature/tall
. So jetzt ist das Problem einfacher und kann automatisiert werden: find branches whose "upstream" is gone, and delete those. (Das eine Zeilenskript in dieser Antwort hat einige kleinere Fehler; siehe die Kommentare; ein zarteres würde git for-each-ref
verwenden und die Upstream-Einstellung jedes Zweiges mit git rev-parse
nachschlagen, aber das ist wahrscheinlich zu viel.)