/ / Obtener todas las ramas remotas en un repositorio Git desnudo - git, github

Obtener todas las ramas remotas en un repositorio de Git simple - git, github

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.