¿Puede presionar a todos los controles remotos de Git con un command?

En lugar de hacer:

git push origin --all && git push nodester --all && git push duostack --all 

¿Hay alguna manera de hacerlo con solo un command?

Gracias 🙂

Para empujar todas las twigs a todos los controles remotos:

 git remote | xargs -L1 git push --all 

O si desea enviar una twig específica a todos los controles remotos:

Reemplace el master con la twig que desea presionar.

 git remote | xargs -L1 -IR git push R master 

(Bonificación) Para crear un alias git para el command:

 git config --global alias.pushall '!git remote | xargs -L1 git push --all' 

Ejecutar git pushall ahora empujará todas las twigs a todos los controles remotos.

Cree un control remoto con varias URL de repos en su nombre:

 git remote add all origin-host:path/proj.git git remote set-url --add all nodester-host:path/proj.git git remote set-url --add all duostack-host:path/proj.git 

Entonces simplemente git push all --all .


Así es como se ve en .git/config :

  [remote "all"] url = origin-host:path/proj.git url = nodester-host:path/proj.git url = duostack-host:path/proj.git 

Si desea presionar siempre para repo1, repo2 y repo3, pero siempre extraer solo de repo1, configure el 'origen' remoto como

 [remote "origin"] url = https://exampleuser@example.com/path/to/repo1 pushurl = https://exampleuser@example.com/path/to/repo1 pushurl = https://exampleuser@example.com/path/to/repo2 pushurl = https://exampleuser@example.com/path/to/repo3 fetch = +refs/heads/*:refs/remotes/origin/* 

Configurar en la línea de command:

 $ git remote add origin https://exampleuser@example.com/path/to/repo1 $ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo1 $ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo2 $ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo3 

Como alternativa CLI para editar el file .git / config, puede usar los siguientes commands:

 # git remote add all origin-host:path/proj.git # git remote set-url --add all nodester-host:path/proj.git # git remote set-url --add all duostack-host:path/proj.git 

El mismo git push all --all funciona aquí también.

Has logrado lo mismo que la respuesta # 1. Acaba de hacerlo con la command-line en lugar de la edición sin procesar del file de configuration.

Escribí una function corta bash para presionar a muchos controles remotos en una llamada. Puede especificar un solo control remoto como parámetro, múltiples controles remotos separados por espacios o no especificar ninguno para que se aplique a todos los controles remotos.

Esto se puede agregar a su .bashrc o .bash_profile.

 function GitPush { REMOTES=$@ # If no remotes were passed in, push to all remotes. if [[ -z "$REMOTES" ]]; then REM=`git remote` # Break the remotes into an array REMOTES=$(echo $REM | tr " " "\n") fi # Iterate through the array, pushing to each remote for R in $REMOTES; do echo "Pushing to $R..." git push $R done } 

Ejemplo: supongamos que su repository tiene 3 controles remotos: rem1, rem2 y rem3.

 # Pushes to rem1 GitPush rem1 # Pushes to rem1 and rem2 GitPush rem1 rem2 # Pushes to rem1, rem2 and rem3 GitPush