Por lo general, Git puede resolver las diferencias entre las ramas y fusionarlas automáticamente. Normalmente, los cambios se encuentran en líneas diferentes o en archivos diferentes, por lo que Git puede combinarlos sin ayuda. A veces, los cambios que entran en conflicto necesitan tu ayuda. Los conflictos de combinación a menudo se producen cuando las personas realizan cambios diferentes en la misma línea del mismo archivo, o cuando una persona edita un archivo y otra persona elimina el mismo archivo.
Los conflictos de combinación bloquean la combinación porque Git no puede elegir de forma segura qué versión del contenido en conflicto se debe mantener. Debes resolver todos los conflictos de fusión antes de poder fusionar una solicitud de extracción en GitHub. Si la solicitud de incorporación de cambios tiene un conflicto de combinación entre la rama de comparación y la rama base, el botón Combinar solicitud de incorporación de cambios se desactiva hasta que se resuelven los conflictos.
Resolución de conflictos de combinación
Resolver un conflicto de combinación significa elegir el contenido final que debe aparecer después de combinar las ramas. La herramienta correcta depende del tipo de conflicto.
- A menudo, los conflictos de línea simples se pueden resolver en GitHub. Consulte Resolving a merge conflict on GitHub.
- Los conflictos más complejos deben resolverse en un clon local y enviarse de vuelta a la rama de la solicitud de extracción. Consulte Resolving a merge conflict using the command line.
- Si tienes acceso a agente en la nube de Copilot y está habilitado para el repositorio, Copilot puede ayudarte a resolver conflictos desde el cuadro de fusión. Consulte Uso de Copilot agente en la nube en GitHub.
En la línea de comandos, Git indica cuándo una combinación no puede finalizar automáticamente. No puedes enviar el resultado fusionado hasta que resuelvas el conflicto y confirmes la resolución.
$ 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