Как удалить все удаленные ветки git, которые уже были интегрированы?

На работе мы используем ветки темы, которые в какой-то момент интегрированы в несколько (3) главных ветвей. Теперь я хочу удалить все ветки тем из моего удаленного репозитория, которые были полностью интегрированы в главную ветку. Если это невозможно, поиск списка локальных ветвей, которые были интегрированы, тоже будет прекрасным.

Ответ 1

Edit:

Лучший ответ от комментария skalee:

git branch -a --merged remotes/origin/master | grep -v master | grep "remotes/origin/" | cut -d "/" -f 3- | xargs -n 1 git push --delete origin

Старый ответ:

git push --delete remote topicbranch

или

git push remote :topicbranch

Давая список ветвей, было бы что-то с git branch --merged master

Ответ 2

Вы можете сделать это за один раз с помощью

git branch --merged master | grep -v master | xargs -n 1 git push --delete origin

Дамп, который в script называется "чистым", если вы обнаружите, что делаете это часто.

Ответ 3

Если вы хотите удалить удаленные ветки из исходного репозитория:

git branch -r --merged develop | egrep -iv '(master|develop)' | sed 's/origin\///g' | xargs -n 1 git push --delete origin

Ответ 4

Это команды, которые я использую, чтобы удалить все слияние в origin/master. В принципе, я удаляю все ветки, объединенные в master из GitHub.

git remote update -p &&
git branch -r --merged origin/master |
grep origin |
grep -v master |
cut -d"/" -f2- |
xargs git push origin --delete