Mantener nuestras ramas sincronizadas en Git usando git checkout y git merge.
Cuando trabajamos en proyectos con varias ramas activas, suele pasar que una rama se quede desactualizada respecto a otra. Esto puede ser un problema si luego necesitamos integrarlas o simplemente queremos que una rama secundaria tenga los últimos cambios. Por eso, es útil saber cómo actualizar una rama en Git tomando como referencia otra.
Es algo que te pasará día si y día también al trabajar en proyectos Git. Vams a ver cómo hacerlo.
En términos simples: queremos que una rama tenga los cambios que ya existen en otra rama. Esto se hace para que el trabajo que estamos haciendo se base en la versión más reciente del proyecto.
La forma clásica de hacerlo es usar dos comandos:
git checkout rama-destinogit merge rama-origen
Supongamos que estamos desarrollando una nueva funcionalidad en la rama feature/nueva-funcionalidad
, y queremos actualizarla con los últimos cambios que otros compañeros han subido a main
.
git checkout feature/nueva-funcionalidad
git fetch origin
main
dentro de feature/nueva-funcionalidad
:git merge origin/main
Nota: Si ya teníamos una copia local de
main
, podríamos haber hechogit merge main
, pero al usarorigin/main
nos aseguramos de tener la versión más reciente del repositorio remoto.
A veces, Git no puede decidir cómo combinar los cambios, y nos toca intervenir. Veremos algo así:
Auto-merging archivo.txtCONFLICT (content): Merge conflict in archivo.txtAutomatic merge failed; fix conflicts and then commit the result.
Editamos los archivos conflictivos, elegimos qué líneas mantener y luego hacemos:
git add archivo.txtgit commit
Git abrirá un mensaje de commit prellenado que podemos dejar tal cual o ajustar, según el caso.
Con esos pasos, nuestra rama feature/nueva-funcionalidad
queda al día con todo lo que ha pasado en main
. Esto es útil si queremos evitar sorpresas al hacer un futuro merge
o pull request
. Además, nos permite detectar a tiempo si nuestros cambios van a causar conflictos o si hay ajustes necesarios antes de seguir desarrollando.
git pull origin main
En algunos contextos, también se puede usar este comando:
git pull origin main
Esto hace, en una sola línea, lo mismo que fetch
+ merge
. Pero ojo: si preferimos tener más control, es recomendable hacerlo por separado.
Actualizar una rama desde otra en Git no es complicado, pero vale la pena hacerlo con cuidado. Nos ayuda a mantener el código limpio y evitar dolores de cabeza más adelante.
En resumen:
fetch
.merge
.El proceso es sencillo y al trabajar con Git lo usuarás a diario.