Empurrando alterações de sll para todos os controles remotos

Freqüentemente, tenho várias cópias dos meus repositórios git em servidores diferentes para fins de backup. Eu tentei a expansão de chave ZSH para fazer coisas assim, git push {origin,home} mastermas nunca funcionou corretamente.

Eu finalmente desisti e escrevi esta função e a coloquei em minha rotina de inicialização do ZSH:

# Git Push All
function gpa(){
for r in $(git remote); do
echo
"Pushing All Changes to $r";
git push $r
--all;
echo
"";
done
}

Isso irá enumerar todos os git remotes configurados e enviar todas as alterações para eles. Você pode querer adicionar uma git push $r --tags;linha também.

Obviamente, essa não é uma solução padrão para todos, mas para quando eu precisar, ela está.