Skip to main content

Acerca de los conflictos de fusión

Los conflictos de fusión suceden cuando fusionas ramas que tienen confirmaciones de cambios contrapuestas, y Git necesita tu ayuda para decidir qué cambios incorporar en la fusión final.

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.

Debe resolver todos los conflictos de combinación para poder fusionar un pull request 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 el conflicto de combinación se debe a cambios concurrentes en las líneas, como cuando personas realizan cambios diferentes en la misma línea del mismo archivo en ramas diferentes de su repositorio de Git, puede resolverlo en GitHub mediante el editor de conflictos. Para más información, consulta Resolución de un conflicto de combinación en GitHub.

  • Para todos los demás tipos de conflictos de combinación, debe resolver el conflicto de fusión en un clon local del repositorio y empujar el cambio a su rama en GitHub. Puede usar la línea de comandos o una herramienta como GitHub Desktop para insertar el cambio. Para más información, consulta Resolver un conflicto de fusión con la línea de comando.

  • Para cualquier tipo de conflicto de combinación, si tiene acceso a agente en la nube de Copilot y está habilitado para el repositorio, puede hacer clic en Corregir con Copilot en el cuadro de combinación para que Copilot resuelva los conflictos por usted. Copilot analizará los cambios en conflicto, resolverá los conflictos y comprobará que la compilación, las pruebas y el linter siguen superándose. Para más información, consulta Revisar la salida de Copilot.

Si tiene un conflicto de combinación en la línea de comandos, no podrá empujar los cambios locales a GitHub hasta que resuelva el conflicto de combinación localmente en tu equipo. Si intentas fusionar ramas en la línea de comandos que tienen un conflicto de fusión, recibirás un mensaje de error. Para más información, consulta 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

Información adicional