Alias ​​global de Git para eliminar las sucursales locales que no están en el control remoto

Tengo este código bash , que corta twigs locales que no existen en el control remoto:

git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d 

Quiero convertirlo en un alias global git , así puedo ejecutar toda la magia de esta manera:

 git cleanup 

Hasta ahora estoy intentando esto (pero no está funcionando):

 git config --global alias.cleanup "git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d" 

Se queja de que "git" no es un command. Intenté hacer el primer git a !git pero luego solo enumera todas las opciones para git config , como si tuviera el command alias completo equivocado.

Nota

Sé que esto no es demasiado complicado con un alias de bash, pero me gustaría intentar convertirlo en un alias de git, para que se ejecute como si fuera un command de git.

Prueba esto:

 $ git config --global alias.cleanup '!bash -c "git fetch --prune && git branch -r | awk '"'"'{print $1}'"'"' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '"'"'{print $1}'"'"' | xargs git branch -d"' 

O simplemente abra el file ~/.gitconfig y agregue:

 [alias] cleanup = !bash -c \"git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d\" 

Luego confirma:

 $ git config --list| grep alias alias.cleanup=!bash -c "git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d"