Guía de GitHub para principiantes: Fusionar un pull request
Como parte de la guía GitHub para principiantes, aprende a fusionar pull requests. Esto te permitirá resolver conflictos cuando surjan.
¡Bienvenido de nuevo a GitHub para Principiantes, una serie diseñada para ayudarte a navegar GitHub con facilidad!
Hasta ahora en esta serie, hemos cubierto los comandos Git más importantes que todo desarrollador debería conocer, cómo crear repositorios, cómo subir archivos y carpetas a tu repositorio, cómo añadir código a tu repositorio y cómo crear tu primera solicitud de extracción (pull request). Sin embargo, a veces puede ser un poco más complicado cuando los cambios entran en conflicto entre sí. Como verás, GitHub tiene herramientas para ayudarte a navegar por esta situación potencialmente confusa.
¡Empecemos!
Resumen de la solicitud de extracción (Pull Request) Primero, revisemos qué es una solicitud de extracción (a menudo referida como PR) y cómo funciona. Una solicitud de extracción es una propuesta para mover un conjunto de cambios de una rama a otra. Después de enviar una solicitud de extracción, otros miembros del equipo pueden revisar tus cambios propuestos antes de aceptarlos. Pueden revisar tu código, probar tus cambios localmente y proporcionar comentarios.
Una vez que hayas completado el proceso de revisión, puedes fusionar los cambios en la rama de destino en GitHub haciendo clic en el botón verde que dice "Confirmar fusión". Esto incorpora los cambios en la rama de destino, aplicando tus actualizaciones propuestas.
¿Qué son los conflictos de fusión?
A veces, GitHub no puede fusionar automáticamente los cambios en la rama de destino. Esto generalmente ocurre debido a un conflicto de fusión.
Los conflictos de fusión ocurren cuando dos ramas diferentes tienen cambios en la misma parte del mismo archivo.
Dado que la misma sección del archivo ha cambiado, GitHub no sabe qué versión de los cambios deseas mantener, por lo que, para fusionar una solicitud de extracción en GitHub, primero debes resolver todos los conflictos de fusión.
Creando un conflicto de fusión
Para mostrarte cómo resolver un conflicto de fusión, es útil crear uno y recorrer los pasos necesarios para solucionarlo. Para este ejemplo, estamos trabajando en este repositorio. Ya tenemos una solicitud de extracción en este repositorio bajo la rama para actualizar el archivo con un cambio en el texto del encabezado. Lo que vamos a hacer es crear una nueva rama para este repositorio e introducir un cambio diferente en la misma sección del archivo .
Abre tu terminal y navega al directorio del proyecto para este repositorio. Si necesitas ayuda con estos pasos, consulta las entradas anteriores en la guía de GitHub para Principiantes. Una vez que estés en tu directorio del proyecto, ejecuta para crear una nueva rama llamada . En la nueva rama, abre el archivo y cambia el texto del encabezado para que sea un título diferente del que existe en la solicitud de extracción. Guarda el archivo y cierra tu editor.
Ahora que se han realizado los cambios, necesitas subirlos ejecutando en la terminal.
Navega al repositorio en GitHub y crea una solicitud de extracción para la rama , incorporando los cambios en la rama principal. No olvides finalizar la fusión haciendo clic en el botón verde "Confirmar fusión" en la página de la solicitud de extracción. Ahora, estos cambios se han integrado en la rama main del repositorio.
Regresa a la solicitud de extracción original de la rama . Si desplazas hacia abajo en la página, verás que ya no tienes la opción de fusionar los cambios en la rama principal. En cambio, verás un mensaje que indica que hay un conflicto de fusión que necesita ser resuelto.
Resolviendo el conflicto de fusión
Hay un par de formas en las que puedes resolver conflictos de fusión. Una opción es hacer clic en el botón "Resolver conflictos" en la página de la solicitud de extracción. También puedes abordar los conflictos de fusión localmente al bajar los últimos cambios en la rama de destino. Vamos a seguir la segunda opción.
En tu terminal, ejecuta para navegar a la rama principal. En esa rama, baja los últimos cambios ejecutando el comando . Ahora, navega de vuelta a tu rama ejecutando en la terminal.
Dependiendo de tu editor de código, la sección problemática puede estar resaltada. Si estás usando un editor de código con soporte integrado de GitHub, como VS Code, verás algunas opciones en la parte superior de la sección resaltada.
Si es así, haz clic en la opción que dice "Aceptar cambio actual". Esto editará el archivo de modo que solo quede el cambio entrante en el archivo.
Si tu editor de código no tiene soporte integrado de GitHub, necesitarás editar manualmente el archivo para eliminar las secciones en conflicto. Se pueden identificar fácilmente por la presencia de varios signos de menor (es decir, <<<<<<< al inicio del conflicto y >>>>>>> al final del conflicto).
Una vez que hayas terminado de editar el archivo, guarda tus cambios y cierra el editor de código. De vuelta en la terminal, ejecuta los siguientes comandos para confirmar tus cambios y verificar que todos los cambios se hayan confirmado.
Finalmente, es hora de subir estos cambios a GitHub. Haz esto ejecutando el comando . Esto sube los cambios que han resuelto los conflictos de fusión a tu solicitud de extracción. Si navegas de vuelta a la solicitud de extracción en GitHub, verás que los conflictos ya no existen y que puedes fusionar los cambios en la rama principal haciendo clic en el botón verde "Fusionar solicitud de extracción". Por último, pero no menos importante, no olvides hacer clic en el botón "Confirmar fusión".
¡Felicidades! Has resuelto el conflicto y actualizado la rama principal con los cambios solicitados.
Technical Leader & Application Developer at IBM | Skilled in Java, SpringBoot & Microservices - Coding and leading teams to build scalable solutions.
3 semanasBuen artículo, va ayudar a muchos que están iniciando en Git. Como sugerencia aunque es algo muy a mi gusto personal sería agregar al final un resumen de los que se explicó con una lista de los pasos para resolver un conflicto al realizar un merge.
Web Developer | Full Stack Developer | MERN Stack Developer | JavaScript Engineer
3 semanasЦікаво