Hazte Online

pon un poco de informática en tu vida

Git pull all remote branches

O como actualizar todas las ramas remotas de nuestro proyecto git en el equipo local.

Yo trabajo básicamente con dos ordenadores, el de sobremesa y el portátil, ambos con Ubuntu 12.10, y claro, quiero tener mis proyectos actualizados en ambos.

Para ello utilizo un servidor git llamado BitBucket y unas pequeñas reglas de convivencia.

Cada proyecto va a tener como mínimo dos ramas: master y develop. La rama master contendrá el proyecto concienzudamente testeado y será lo que exista en el servidor web. Por otro lado la rama develop contendrá las últimas modificaciones.

Mi operativa es la siguiente:

- Cuando quiero empezar a realizar una nueva modificación creo una rama nueva a partir de develop git checkout -b nueva_modificacion develop.

- Una vez que he terminado la modificación la fusiono con develop y borro la rama: git checkout develop –> git merge --no-ff nueva_modificacion –> git branch -d nueva_modificacion.

Si entre medias de la nueva modificación termino la jornada, tengo que subir los cambios al servidor git ya que quiero tenerlos siempre accesibles desde cualquier ordenador. Para subir todas las ramas e incluso crear las que no existan en el servidor: git push --mirror origin.

Y hasta aquí, ningún problema, pero cuando llego al otro ordenador y quiero obtener las nuevas ramas y actualizar tanto las que tengo ya como las nuevas, es donde me encuentro con el problema. No he podido encontrar una solución que me funcione bien y no sea muy compleja, por lo que decidí crear un script para linux que me solucione la papeleta.

Este script lo que hace es listar las ramas que existen en el servidor mediante el comando git ls-remote, quitar las innecesarias y con el resto recorrerlas y una por una crear la rama (si existe muestra un error advirtiéndolo, pero sigue su funcionamiento sin problemas) y actualizarla con git pull.

Lo único que tenéis que hacer es copiar el script en /usr/bin, ejecutar sudo chmod +x /usr/bin/git-pull-all y desde vuestro proyecto a actualizar ejecutar git-pull-all.

https://github.com/ruben2m/git-pull-all/

Comentarios