Comment puis-je faire en sorte que git Push
transmette non seulement à Origin
mais également à un autre référentiel distant?
comme git Push
n'est qu'un alias pour git Push Origin
, puis-je alias git Push to Push vers deux référentiels distants à la fois (avec une seule commande)?
Je ne cherche pas de script non-git ici, mais j'aimerais l’installer pour mon référentiel local dans git.
Quand j'ai essayé avec des scripts post-Push, j'ai échoué.
Je ne pense pas que vous puissiez le faire simplement en définissant un drapeau sur git, mais vous pouvez modifier un fichier de configuration qui vous permettra de transmettre à plusieurs référentiels distants sans les saisir manuellement pas après)
Dans le fichier .git/config
, vous pouvez ajouter plusieurs URL à une télécommande définie:
[remote "all"]
url=ssh://user@server/repos/g0.git
url=ssh://user@server/repos/g1.git
Si vous git Push all
maintenant, vous appuyez sur toutes les URL distantes.
Vous pouvez ajouter plusieurs URL à une branche distante (par exemple, all
) directement à partir de la ligne de commande en utilisant git config --add remote.xyz.url
avec différentes URL:
git config --add remote.all.url ssh://user@server/repos/g0.git
git config --add remote.all.url ssh://user@server/repos/g1.git
Si vous êtes super fainéant et ne supportez pas de copier/coller l'URL plusieurs fois, ceci est pour vous:
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
Un script bashy complet est possible (testez $name
et $method
), mais awk
est gentil et il y a de l'amour pour tout le monde.
Ensuite, vous pouvez appuyer sur toutes les télécommandes avec
git Push all
Vous pouvez également obtenir l'URL à partir de télécommandes configurées:
for repo in g0 g1 ...
do
git config --add remote.all.url `git config remote.$repo.url`
done
où g0, g1, ... sont les noms de vos télécommandes.