Este artículo explica cómo mantener una rama sincronizada con "master" en un repositorio git.
Supongamos que creamos una nueva rama de desarrollo (mediante git branch
) en uno de nuestros proyectos gestionados a través de git, llamémosla "featurex". Esta rama es una divergencia en el desarrollo del proyecto, que seguirá avanzando por un camino separado al de la rama principal ("master"). Sin embargo, luego la rama principal "master" se actualiza con uno o varios commits, los cuales deseamos incorporarlos a nuestra rama "featurex". En otras palabras, deseamos mantener la rama "featurex" sincronizada o actualizada con los últimos cambios realizados en "master".
El procedimiento es bastante simple.
Inicialmente estamos en la rama "featurex" en nuestra copia de trabajo:
user@devuan:/usr/local/repo/hurd$ git checkout featurex Already on 'featurex'
A su vez nuestra copia de trabajo está correctamente sincronizada contra el repositorio git bare remoto ("origin") en la rama "featurex":
user@devuan:/usr/local/repo/hurd$ git pull Already up-to-date. user@devuan:/usr/local/repo/hurd$ git push origin featurex Username for 'https://git.linuxito.com': linuxito Password for 'https://linuxito@git.linuxito.com': Everything up-to-date
El primer paso consiste en pasar a la rama "master" para traer los últimos cambios (commits) disponibles:
$ git checkout master
Ejecutar git pull
para actualizar nuestra copia de trabajo con "master":
$ git pull
Luego volver a nuestra rama "featurex":
$ git checkout featurex
Ahora es posible hacer el merge entre "master" y "featurex", para que ésta última se sincronice con los cambios realizados "master" luego del branch:
$ git merge master featurex
En caso de no haber conflictos, el merge es automático y nuestra rama "featurex" queda actualizada con lo último en "master".
Opcionalmente se puede luego enviar este cambio al remote:
$ git push origin featurex
En caso de conflictos, se deberán resolver manualmente. Pero esto es material para otro artículo. Para mayor información acerca de la resolución de conflictos ver la sección "HOW CONFLICTS ARE PRESENTED" de la página de manual git-merge(1)
.
Referencias
man git
man git-branch
man git-checkout
man git-merge
man git-pull
man git-push
man git-remote