#!/bin/bash # Sincronizo local con el remoto echo -e "\e[32mPrimero vamos a sincronizar el repo local con el remoto\e[0m" git pull origin HEAD $@ git fetch origin git fetch --prune # Filtrar ramas branches=($(git branch -a --merged | egrep -v "(^\*|main|master|default|trunk|pro|prod|production|release)")) # Verificar si hay ramas para eliminar if [ ${#branches[@]} -eq 0 ]; then echo -e "\e[32mNo hay ramas para eliminar.\e[0m" exit 0 fi # Mostrar las ramas a eliminar echo -e "\e[33mOJO! Las siguientes ramas serán eliminadas:\e[0m" for branch in "${branches[@]}" do echo "- $branch" done # Solicitar confirmación read -p "¿Estás seguro de que deseas eliminar estas ramas? (s/n): " confirm if [[ $confirm == "s" ]]; then # Eliminar las ramas filtradas for branch in "${branches[@]}" do branch_name=${branch#remotes/origin/} # Eliminar "remotes/origin/" del nombre de la rama # Verificar si la rama remota existe if git rev-parse --quiet --verify "refs/remotes/origin/$branch_name" >/dev/null; then echo -e "\e[34mSe procede a eliminar la rama: $branch_name\e[0m" git push origin --delete "$branch_name" else echo -e "\e[31mLa rama $branch_name no existe en el repositorio remoto. Saltando eliminación.\e[0m" fi done elif [[ $confirm == "n" ]]; then echo "Operación cancelada." else echo "Opción no válida. Operación cancelada." fi #######