Для меня «неиспользуемые» ветки определяются как что-либо, объединенное с текущей веткой, которое не называется master, development или release / *. Если вы согласны, вы можете использовать эти два сценария bash (поместите их в PATH, один вызовет другой).
Удаленный по умолчанию метод очистки называется origin, но его можно указать в качестве второго параметра. , а исключенные ветви - третий параметр.
cleanupremote. sh
#!/bin/bash
set -e
function listbranches {
git branch -r --merged | tr -d ' ' | sed "s/$remote\///" | grep -vxE "$excludes"
}
remote=${2:-origin}
excludes=${3:-master|develop|release/.*}
if [ "$1" == "--dry-run" ]; then
echo "The following branches would be deleted:"
listbranches
exit 0;
elif [ "$1" == "--really-delete" ]; then
echo "Deleting remote branches..."
else
echo "Error: first parameter must be either --dry-run or --really-delete"
exit 1
fi
listbranches | deleteremotebranches.sh $remote
deleteremotebranches. sh
#!/bin/bash
set -e
remote=${1:-origin}
xargs git push $remote --delete
Типичное использование - просто запустить cleanupremote.sh
, чтобы увидеть требуемые ключи, затем повторите его с - dry -run, добавляя к третьему параметру, пока в списке нет ненужных веток:
cleanupremote.sh --dry-run origin 'master|develop|feature/oh_not_that_one_I_need_it'
cleanupremote.sh --really-delete origin 'master|develop|feature/oh_not_that_one_I_need_it'
Это два отдельных файла, так что Вы можете вызывать deletebranches. sh напрямую, указав удаленный и трубопровод в ответвлениях для удаления.