Еще один ответ, отредактированный кем-то, кто считал, что он лучший (и выглядит хорошо) :
git branch -r --merged origin/master | grep -v master | grep "origin/" | cut -d "/" -f 3- | xargs -n 20 git push --delete origin
Пояснение:
git branch -r --merged origin/master
-r
/ --remotes
список ветвей удаленного слежения.
--merged origin/master
только список ветвей, чьи подсказки доступны с origin/master
.
grep -v master
удалить любое имя ветви, содержащее master
из списка. 1 -v
означает отрицательное совпадение.
grep "origin/"
выбор только филиалов на origin
пульте.
cut -d "/" -f 2-
сбросить префикс origin/
xargs -n 20 git push --delete origin
сделать что-то похожее на git push --delete origin branch-a branch-b branch-c …
-n 20
/ --max-args=20
использовать не более 20 аргументов в командной строке.
Что касается -n
, я выбрал 20 в качестве примера. Меньшее количество аргументов сделает его медленнее, например, -n 1
заставляет его удалять по одному; у вас есть больше подсказок о прогрессе, потому что он будет сообщать каждый раз, когда удаляет ветку. Дополнительные аргументы, такие как -n 200
, сделают его быстрее (меньше общего времени), но он сообщает только один раз каждые 200 веток, что заставляет вас думать, что сначала он заморожен (а это не так). Настройте номер под свои нужды. Если вы не включите эту опцию, номер по умолчанию будет очень большим (2048 на моем компьютере).
1. Обратите внимание, что это также удаляет origin/HEAD -> origin/master
, но вы все равно не захотите связываться с origin/HEAD
.
Оригинальный ответ:
git push --delete remote topicbranch
или
git push remote :topicbranch
Дать список веток, было бы что-то с git branch --merged master