Fusionar ramas en GitHub es fundamental cuando varias personas (o incluso diferentes funciones en las que trabajas) necesitan trabajar juntas. Si eres nuevo en esto, a veces resulta un poco abrumador, sobre todo si surgen conflictos o si intentas hacerlo desde la línea de comandos y no estás seguro de qué comandos son importantes. Esta guía te ayudará, tanto si prefieres navegar por el sitio web como si prefieres escribir comandos en tu terminal. Podrás combinar los cambios de código sin problemas y mantener tu proyecto limpio y ordenado, sin sobrescribir accidentalmente el trabajo de otros ni acabar en un caos de fusiones.
¿Cómo fusionar una rama en GitHub?
Método 1: Fusionar con el sitio web de GitHub
Esta suele ser la opción más sencilla para quienes no quieren complicarse con comandos de terminal. Es visual, sencilla y compatible con Reddit. Además, puedes hacerlo directamente desde tu navegador, así que no necesitas configuración.
- Abra el repositorio en GitHub donde se encuentran sus ramas.
- Haga clic en la pestaña Solicitudes de extracción en la parte superior de la página del repositorio.
- Haga clic en Nueva solicitud de extracción.
- Elige la rama base (probablemente la principal o la maestra) y compárala con la rama de características que quieres fusionar (por ejemplo, feature-xyz).Si no estás seguro de cuál es cuál, estas suelen estar claramente etiquetadas.
- Revisa qué cambios están a punto de fusionarse. A veces conviene volver a comprobarlo, sobre todo si hubo muchas actualizaciones recientes.
- Haz clic en “Crear solicitud de extracción”. Agrega un título breve y una nota sobre lo que hace esta fusión (porque, por supuesto, GitHub te obliga a hacerlo).
- Si todo se ve bien, presione el botón Fusionar solicitud de extracción.
- Confirma la fusión haciendo clic en “Confirmar fusión”.¡Listo! Tu rama ya forma parte de lo que estés fusionando.
Antes o después de eso, muchas personas clonan el repositorio localmente en su equipo para trabajar directamente en el código y luego lo devuelven cuando está listo. Probablemente sea más natural para desarrolladores experimentados.
Método 2: Fusión mediante la línea de comandos
Aquí es donde algunos recurren a Git Bash, Terminal o PowerShell y realizan un poco de trabajo manual. Es más rápido una vez que se domina, y a veces es la única manera si se automatizan procesos o se trabaja en pipelines de CI/CD.
- Abra su terminal o Git Bash.
- Navegue a su carpeta de repositorio local usando
cd /path/to/your/repo
. - Asegúrate de estar en la rama principal:
git checkout main
. Si tu rama principal se llama master o algo diferente, sustitúyela como corresponda. - Extraer los últimos cambios desde el origen:
git pull origin main
. - Fusiona tu rama de características:
git merge feature-branch
. Reemplázalafeature-branch
con el nombre de tu rama. - Si no hay conflictos, puedes devolver el código combinado:
git push origin main
.
Si surgen conflictos, tendrás que abrir esos archivos, determinar qué líneas conservar y luego ejecutarlos git add
para git commit
finalizar la fusión. Los conflictos son molestos, pero se pueden gestionar; a veces, basta con una rápida edición manual. Dato curioso: en algunas configuraciones, los conflictos aparecen incluso cuando no deberían, lo cual es un poco extraño, pero reiniciar o rebasar puede ayudar.
Manejo de conflictos de fusión
Los conflictos ocurren cuando dos ramas tienen cambios en las mismas líneas de código. Si Git no sabe cuál conservar, marcará esas secciones y tendrás que decidir.
- Git marcará los archivos en conflicto después de intentar fusionarlos. Generalmente, te indicará qué archivos necesitan reparación.
- Abre esos archivos en tu editor de código. Presta atención a las secciones marcadas con <<<<<<<, ======= y >>>>>>>.Git te indica dónde están los conflictos.
- Decide qué cambios conservar, elimina los marcadores de conflicto y guarda.
- Ejecutar
git add.
para preparar los archivos resueltos. - Para finalizar
git commit
, durante esta confirmación, incluso puedes agregar un mensaje sobre cómo resolver conflictos. - Envía tus cambios al control remoto:
git push origin main
.
Este proceso puede ser frustrante las primeras veces, sobre todo si surgen conflictos de forma inesperada o durante fusiones complejas. Pero después de un par de intentos, se vuelve menos molesto y se empiezan a detectar los conflictos a tiempo.
Por qué es importante la fusión
Básicamente, la fusión mantiene todo el trabajo sincronizado. Garantiza que todos trabajen con el código más reciente, evita la duplicación de esfuerzos y ayuda a evitar una maraña de versiones diferentes.
Preguntas frecuentes
Abre GitHub Desktop y cambia a tu rama base (como la principal).Haz clic en Rama > Fusionar con la rama actual y selecciona tu rama de funciones. Es bastante sencillo una vez que te acostumbras.
Sí, si es reciente, puedes usar un git reset (como git reset --hard HEAD~1
“reset”) para deshacer la última fusión. Si es más antiguo o se envió, quizás tengas que revertirlo. Es algo arriesgado, así que guarda copias de seguridad si no estás seguro.
La fusión conserva el historial tal como se produjo, mostrando todas las ramas intactas, mientras que la rebase reescribe el historial en un flujo lineal. La rebase puede ser más limpia, pero puede ser complicada si no se tiene cuidado.
Depende del proyecto. Para la mayoría de los repositorios compartidos, se necesita acceso de escritura o de mantenimiento para fusionar con las ramas principal o de producción. De lo contrario, se deberá abrir una solicitud de extracción y esperar la aprobación.
Resumen
Fusionar ramas es fundamental para trabajar con GitHub. Ya sea que estés haciendo clic en botones o escribiendo comandos, lo principal es verificar los cambios, resolver los conflictos cuidadosamente y mantener tu historial ordenado. A veces las cosas no salen a la perfección, pero eso es parte del aprendizaje. Si trabajas en equipo, las buenas fusiones mantienen todo funcionando a la perfección y reducen las dudas o las rehacer el trabajo. Simplemente vigila los conflictos cuando surjan y tu repositorio se mantendrá en orden.