Por lo general, Git puede resolver las diferencias entre las ramas y fusionarlas automáticamente. Generalmente, los cambios están en diferentes líneas o incluso en diferentes archivos, lo que hace que sea simple para los equipos comprender la fusión. Sin embargo, a veces hay cambios contrapuestos que Git no puede resolver sin tu ayuda. Por lo general, los conflictos de fusión suceden cuando las personas realizan diferentes cambios en la misma línea en el mismo archivo o cuando una persona edita un archivo y otra persona elimina el mismo archivo.
Debes resolver todos los conflictos de fusión antes de poder fusionar un solicitud de extracción en GitHub. Si tiene un conflicto de combinación entre la rama de comparación y la rama base de la solicitud de incorporación de cambios, puede ver una lista de los archivos con cambios en conflicto encima del botón Combinar solicitud de incorporación de cambios. El botón Combinar solicitud de incorporación de cambios se desactiva hasta que haya resuelto todos los conflictos entre la rama de comparación y la rama base.
Resolución de conflictos de combinación
Para resolver un conflicto de fusión, debes editar de forma manual el archivo conflictivo para seleccionar los cambios que quieres mantener en la fusión final. Hay un par de maneras diferentes de resolver un conflicto de fusión:
- Si tu conflicto de fusión es ocasionado por cambios de líneas contrapuestos, como cuando las personas realizan diferentes cambios en la misma línea del mismo archivo en diferentes ramas en tu repositorio de Git, lo puedes resolver en GitHub usando el editor de conflictos. Para obtener más información, vea «Resolver un conflicto de fusión en GitHub».
- Para todos los otros tipos de conflictos de fusión, debes resolver el conflicto de fusión en un clon local del repositorio y subir el cambio a tu rama en GitHub. Puede usar la línea de comandos o una herramienta como GitHub Desktop para insertar el cambio. Para obtener más información, consulta "Resolver un conflicto de fusión con la línea de comando".
Si tienes un conflicto de fusión en la línea de comandos, no puedes subir tus cambios locales a GitHub hasta que resuelvas el conflicto de fusión localmente en tu equipo. Si intentas fusionar ramas en la línea de comandos que tiene un conflicto de fusión, recibirás un mensaje de errror. Para obtener más información, vea «Resolver un conflicto de fusión con la línea de comando».
$ git merge BRANCH-NAME
> Auto-merging styleguide.md
> CONFLICT (content): Merge conflict in styleguide.md
> Automatic merge failed; fix conflicts and then commit the result