Suponho que você esteja usando o "novo" sistema de conclusão ativado por compinit . Se você está usando oh-my-zsh, você é.
Você precisa dizer ao zsh para usar nomes de ramificações do git para gpDo . O Git já vem com uma maneira de completar os nomes das filiais. A partir do zsh 5.0.7, esta é a função __git_branch_names , mas esta não é uma interface estável, portanto, pode mudar em outras versões. Para usar essa função, coloque esta linha no seu .zshrc :
compdef __git_branch_names gpDo
Com essa declaração, a conclusão após gpDo só funcionará depois que você tiver concluído algo em uma linha de comando git pelo menos uma vez. Isto é devido a uma peculiaridade de autoloading de função no zsh. Como alternativa, execute _git 2>/dev/null no seu .zshrc ; isso causa um erro porque a função de conclusão é chamada em um contexto inválido, mas o erro é inofensivo, e o efeito colateral de carregar _git e funções associadas, incluindo __git_branch_names ', permanece.
Como alternativa, defina sua própria função para conclusão de ramificação git. Maneira rápida e suja:
_JJD_git_branch_names () {
compadd "${(@)${(f)$(git branch -a)}#??}"
}