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


Tal vez pueda interesarte


Compartí este artículo