2008-10-02 11 views
41

Básicamente lo que quería hacer algo como git push mybranch to repo1, repo2, repo3¿Puedo presionar a más de un repositorio en un solo comando en git?

en este momento sólo estoy escribiendo empuje muchas veces, y si estoy en un apuro al empujar el hecho, acabo de enviar a todos ellos a un segundo plano git push repo1 & git push repo2 &

Me pregunto si el git es compatible de forma nativa con lo que quiero hacer, o si existe una secuencia de comandos inteligente, o tal vez una forma de editar el archivo de configuración de repos local para decir que una rama se debe enviar a múltiples controles remotos.

Respuesta

79

Puede tener varias direcciones URL por control remoto en git, a pesar de que el comando git remote no apareció para exponer este último he comprobado. En .git/config, poner algo como esto:

[remote "public"] 
    url = [email protected]:kch/inheritable_templates.git 
    url = [email protected]:projects/inheritable_templates.git 

Ahora usted puede decir “git push public” para empujar a ambos repos a la vez.

+2

Buen consejo. Tenga en cuenta que esto solo funciona para push. Para recuperarlo, parece que solo usa la primera entrada de url. También parece que puede dirigirse a una sucursal en este multi-control remoto. Entonces puede hacer "git pull" sin el nombre remoto si agrega algo como esto a su configuración '[branch" master "] remote = public' – studgeek

+0

¡Gracias, me salva la vida! –

10

Lo que hago es tener un solo repositorio vacío que vive en mi directorio personal al que presiono. El enganche post-actualización en ese repositorio luego empuja o rsyncs a varias otras ubicaciones públicamente visibles.

Aquí es mi ganchos/post-actualización

#!/bin/sh 
# 
# An example hook script to prepare a packed repository for use over 
# dumb transports. 
# 
# To enable this hook, make this file executable by "chmod +x post-update". 

# Update static info that will be used by git clients accessing 
# the git directory over HTTP rather than the git protocol. 
git-update-server-info 

# Copy git repository files to my web server for HTTP serving. 
rsync -av --delete -e ssh /home/afranco/repositories/public/ [email protected]:/srv/www/htdocs/git/ 

# Upload to github 
git-push --mirror github 
+0

eso es bueno. cuidado de compartir o explicar git-update-server-info? – kch

+0

Como he agregado a la respuesta: git-update-server-info escribe algunos archivos de información estática que serán utilizados por los clientes de git que accedan al directorio de git a través de HTTP en lugar del protocolo git. Consulte lo siguiente para obtener más información: http://www.kernel.org/pub/software/scm/git/docs/git-update-server-info.html –

Cuestiones relacionadas