237 votes

Capable d'appuyer sur toutes les télécommandes git avec la même commande?

Au lieu de faire:

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

Est-il possible de faire cela avec une seule commande?

Merci :)

326voto

Aristotle Pagaltzis Points 43253

Créez une télécommande all avec plusieurs URL de dépôt portant son nom:

 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
 

Alors seulement git push all --all .


Voici à quoi cela ressemble dans .git/config :

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

314voto

weakish Points 2121

Unix:

 git remote | xargs -l git push --all
 

OSX:

 git remote | xargs -L1 git push --all
 

Ou si vous voulez pousser une branche spécifique:

 # Replace master with the branch you want to push
for r in $(git remote); do git push $r master; done
 

20voto

Kurt Vanderwater Points 141

Comme alternative à la CLI pour éditer le fichier .git / config, vous pouvez utiliser les commandes suivantes:

 # 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
 

Les mêmes git push all --all fonctionnent ici également.

Vous avez accompli la même chose que la réponse n ° 1. Vous venez de le faire avec la ligne de commande au lieu de l'édition brute du fichier de configuration.

2voto

Chris Points 162

J'ai écrit une fonction de bash pour pousser plusieurs télécommandes en un seul appel. Vous pouvez spécifier une seule télécommande en tant que paramètre, plusieurs télécommandes séparées par des espaces ou n'en spécifier aucune pour qu'elle soit transmise à toutes les télécommandes.

Cela peut être ajouté à votre .bashrc ou .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
}
 

Exemple: Supposons que votre référentiel dispose de 3 télécommandes: rem1, rem2 et rem3.

 # Pushes to rem1
GitPush rem1

# Pushes to rem1 and rem2
GitPush rem1 rem2

# Pushes to rem1, rem2 and rem3
GitPush
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X