spingere su più repository contemporaneamente

Come posso fare git push per spingere non solo verso l’ origin ma anche un altro repository remoto?

come git push è solo un alias per git push origin , posso alias git push per spingere in 2 repository remote contemporaneamente (con solo un comando)?

Non sto cercando uno script non git qui ma vorrei impostarlo per il mio repository locale in git.

Quando l’ho provato con gli script post-push non sono riuscito.

Non penso che tu possa farlo semplicemente impostando un flag su git, ma puoi modificare un file di configurazione che ti permetterà di spingere su più repository remoti senza doverli digitare manualmente tutti (bene solo digitandoli per la prima volta e non dopo)

Nel file .git/config puoi aggiungere più URL a un remoto definito:

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

Se si git push all ora si spinge a tutti gli URL remoti.

Nessuna modifica manuale

È ansible aggiungere più URL a un ramo remoto (ad esempio all ) direttamente dalla riga di comando utilizzando git config --add remote.xyz.url con URL differente:

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

Completamente automatico

Se sei super pigro e non ti limiti a copiare / URL parecchie volte, questo è per te:

 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 

Uno script bashy completo è ansible (test $name e $method ), ma awk è dolce e c'è amore per tutti.

spingere

Quindi puoi inviare a tutti i remoti con

 git push all 

Riferimenti

  • git-config (1) Pagina manuale

Puoi anche ricevere l’url dai telecomandi configurati:

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

dove g0, g1, … sono i nomi dei tuoi telecomandi.