git push para vários repositorys simultaneamente

Como posso fazer o git push para empurrar não apenas a origin mas também outro repository remoto?

como git push é apenas um alias para a git push origin , posso alias git push para empurrar para 2 repositorys remotos de uma vez (com apenas esse comando)?

Eu não estou procurando por um script não-git aqui, mas gostaria de configurar isso para o meu repository local no git.

Quando eu tentei com scripts pós-push eu falhei.

Eu não acho que você pode fazer isso apenas definindo um sinalizador no git, mas você pode modificar um arquivo de configuração que permitirá que você empurre para múltiplos repositorys remotos sem manualmente digitá-los todos (bem apenas digitando-os na primeira vez e Não após)

No arquivo .git/config você pode adicionar vários URLs a um controle remoto definido:

 [remote "all"] url=ssh://user@server/repos/g0.git url=ssh://user@server/repos/g1.git 

Se você git push all agora você empurra para todos os urls remotos.

Sem edição manual

Você pode adicionar vários URL para um ramo remoto (por exemplo, all ) diretamente da linha de comando usando git config --add remote.xyz.url com URL diferente:

 git config --add remote.all.url ssh://user@server/repos/g0.git git config --add remote.all.url ssh://user@server/repos/g1.git 

Totalmente automatizado

Se você é super preguiçoso e não suporta copiar / passar o URL várias vezes, isto é para você:

 function git-add-push-all() { while read -r name url method; do git config --add remote.all.url "$url" done < <(git remote -v | awk '!/^all/ && /push/') } git-add-push-all # from git (sub)directory 

Um script completo é possível (teste $name e $method ), mas awk é doce e existe amor por todos.

Empurrar

Então você pode empurrar para todos os remotos com

 git push all 

Referências

  • git-config (1) Página do manual

Você também pode obter url a partir de controles remotos configurados:

 for repo in g0 g1 ... do git config --add remote.all.url `git config remote.$repo.url` done 

onde g0, g1, … são os nomes dos seus controles remotos.