Configuré un gancho posterior a la recepción de Github, que ejecuta un script en mi servidor web cada vez que se realiza una inserción en mi repositorio de Github.
Cuando se ejecuta el script, quiero que mantenga un clon desnudo local del repositorio sincronizado con mi repositorio Github. Para hacer esto, tengo que ejecutar este comando:
git fetch origin && git reset --soft refs / remotes / origin / master
Entonces, si desde mi estación de trabajo presiono para dominar en Github, todo funciona bien. Sin embargo, si paso a otra rama remota, los cambios no se reflejan en el repositorio local de mi servidor.
Supongo que hay alguna forma de hacer que el script recupere todas de las ramas remotas, pero no sé cómo hacer esto. Sé que las versiones más nuevas de git tienen una opción --todos para buscar / extraer, pero estoy usando la versión 1.6.3.3 de git, que no parece tener esta opción
¿Alguien sabe cómo puedo hacer que mi script obtenga todas las ramas remotas?
¡Gracias!
Respuestas
2 para la respuesta № 1¿Usar un script de shell tal vez?
#!/bin/sh
for i in `git remote show`; do
git fetch $i;
done;
Nota: Pequeño error de terminología en su pregunta: El --all
opción de git fetch|pull
busca todos los "controles remotos", no las "ramas remotas".
20 para la respuesta № 2
git fetch origin "*:*"
trabajó para mi.
0 para la respuesta № 3
Pensé que "proporcionaría mi propia solución mientras estoy eneso. Sin embargo, acepté el de Ramkumar, ya que fue la inspiración para esto. La diferencia es que no quiero obtener de todos los controles remotos, sino de cada rama remota en "origen" ...
#!/bin/bash
REMOTE_BRANCHES=$(git branch -r | awk -F"/" "{print $2}")
for i in $REMOTE_BRANCHES; do
git fetch origin $i
done
DESCARGO DE RESPONSABILIDAD: todavía no lo he implementado realmente, pero debería estar cerca.