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 competidores necesitan su 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. Debe resolver todos los conflictos de combinación para poder fusionar un pull request 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 volver a insertarse en la rama de solicitud de incorporación de cambios. Consulte Resolving a merge conflict using the command line.
-
Si tiene acceso a agente en la nube de Copilot y está habilitado para el repositorio, Copilot puede ayudar a resolver conflictos desde el cuadro de combinació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 puede insertar el resultado combinado hasta que resuelva el conflicto y confirme 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