¿Capaz de presionar a todos los controles remotos de git con un solo comando?

Resuelto balupton asked hace 13 años • 7 respuestas

En lugar de hacer:

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

¿Hay alguna manera de hacerlo con un solo comando?

Gracias :)

balupton avatar Apr 26 '11 10:04 balupton
Aceptado

Cree un allcontrol remoto con varias URL de repositorio a 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 solo git push all --all.


Así 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
Aristotle Pagaltzis avatar Apr 26 '2011 03:04 Aristotle Pagaltzis

Para enviar todas las ramas a todos los controles remotos:

git remote | xargs -L1 git push --all

O si desea enviar la rama actual a todos los controles remotos:

git remote | xargs -L1 -I R git push R

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

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

La ejecución git pushallahora enviará todas las ramas a todos los controles remotos.

weakish avatar Sep 07 '2013 14:09 weakish

Si desea enviar siempre a repo1, repo2 y repo3 pero siempre extraer solo desde repo1, configure el 'origen' remoto como

[remote "origin"]
    url = https://[email protected]/path/to/repo1
    pushurl = https://[email protected]/path/to/repo1
    pushurl = https://[email protected]/path/to/repo2
    pushurl = https://[email protected]/path/to/repo3
    fetch = +refs/heads/*:refs/remotes/origin/*

Configurar en la línea de comando:

$ git remote add origin https://[email protected]/path/to/repo1
$ git remote set-url --push --add origin https://[email protected]/path/to/repo1
$ git remote set-url --push --add origin https://[email protected]/path/to/repo2
$ git remote set-url --push --add origin https://[email protected]/path/to/repo3

Si solo desea extraer repo1pero empujar hacia repo1y repo2 para una rama específicaspecialBranch :

[remote "origin"]
    url = ssh://[email protected]:7999/yyy/repo1.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    ...
[remote "specialRemote"]
    url = ssh://[email protected]:7999/yyy/repo1.git
    pushurl = ssh://[email protected]:7999/yyy/repo1.git
    pushurl = ssh://[email protected]:7999/yyy/repo2.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    ...
[branch "specialBranch"]
    remote = origin
    pushRemote = specialRemote
    ...

Consulte https://git-scm.com/docs/git-config#git-config-branchltnamegtremote .

Meng Lu avatar Jul 15 '2015 07:07 Meng Lu