Parece-me que você deseja remover coisas entre \[ e \] :
$ shopt -s extglob
$ printf '%s\n' "${PS1//\\[*(\[^]]|[^\])\\]/}"
(\u@\h)-(\t)-(\w)${git_branch}\n$
No entanto, bash de substituição é tão ineficiente que você provavelmente seria melhor disparar perl ou sed aqui, ou fazer isso em um loop como:
p=$PS1 np=
while :; do
case $p in
(*\\[*\\]*) np=$np${p%%\\[*};p=${p#*\\]};;
(*) break;;
esac
done
np=$np$p
printf '%s\n' "$np"
(essa é a sintaxe POSIX sh padrão acima, BTW).
E se você quiser o prompt expandido :
ep=$(PS4=$np;exec 2>&1;set -x;:); ep=${ep%:}