Bei der Arbeit verwenden wir Themenzweige, die irgendwann in ein paar (3) Hauptzweige integriert werden. Nun würde ich gerne alle Themenzweige aus meinem remote Repositorys, die vollständig in einen Master-Zweig integriert worden sind. Wenn das nicht möglich ist, wäre es auch in Ordnung, eine Liste lokaler Zweige abzurufen, die integriert worden sind.
Antworten
Zu viele Anzeigen?Eine weitere Antwort, die von jemandem eingefügt wurde, der sie für die beste hielt (und sie sieht gut aus) :
git branch -r --merged origin/master | grep -v master | grep "origin/" | cut -d "/" -f 2- | xargs -n 20 git push --delete origin
Erläuterung:
git branch -r --merged origin/master
-r
/--remotes
die Zweige für die Fernverfolgung auflisten.--merged origin/master
nur die Zweige auflisten, deren Spitzen erreichbar sind vonorigin/master
.
grep -v master
jeden Zweignamen entfernen, dermaster
von der Liste. 1-v
bedeutet negative Übereinstimmung.grep "origin/"
Wählen Sie nur Zweige auforigin
entfernt.cut -d "/" -f 2-
dieorigin/
Präfixxargs -n 20 git push --delete origin
etwas Ähnliches tun wiegit push --delete origin branch-a branch-b branch-c …
-n 20
/--max-args=20
maximal 20 Argumente pro Befehlszeile verwenden.
In Bezug auf -n
Ich habe 20 nur als Beispiel gewählt. Weniger Argumente machen es langsamer, zum Beispiel -n 1
bewirkt, dass ein Zweig nach dem anderen gelöscht wird; Sie haben mehr Hinweise auf den Fortschritt, da jedes Mal, wenn ein Zweig gelöscht wird, ein Bericht erstellt wird. Mehr Argumente wie -n 200
wird es schneller (weniger Gesamtzeit), aber es meldet sich nur einmal alle 200 Verzweigungen, so dass man zunächst denkt, dass es eingefroren ist (was aber nicht der Fall ist). Passen Sie die Zahl an Ihre Bedürfnisse an. Wenn Sie diese Option weglassen, ist die Standardzahl sehr groß (2048 bei meinem Rechner).
1. Beachten Sie, dass dadurch auch die <code>origin/HEAD -> origin/master</code> aber Sie werden sich nicht mit <code>origin/HEAD</code> sowieso.
Ursprüngliche Antwort:
git push --delete remote topicbranch
ou
git push remote :topicbranch
Eine Liste von Zweigen zu geben, wäre etwas mit git branch --merged master
Dies sind die Befehle, die ich verwende, um alles zu entfernen und zusammenzuführen origin/master
. Im Grunde genommen entferne ich alle Zweige, die in master
von GitHub.
git remote update -p &&
git branch -r --merged origin/master |
grep origin |
grep -v master |
cut -d"/" -f2- |
xargs git push origin --delete
- See previous answers
- Weitere Antworten anzeigen