Los conflictos de fusión ocurren cuando se hacen cambios contrapuestos en la misma línea de un archivo o cuando una persona edita un archivo y otra persona borra el mismo archivo. Para obtener más información, vea «Acerca de los conflictos de fusión».
Sugerencia: Puede usar el editor de conflictos de GitHub para resolver conflictos de combinación de cambios de líneas contrapuestos entre ramas que forman parte de una solicitud de incorporación de cambios. Para obtener más información, vea «Resolver un conflicto de fusión en GitHub».
Conflictos de fusión de cambios de líneas contrapuestos
Para resolver un conflicto de fusión causado por cambios de líneas contrapuestos, debes decidir qué cambios incorporar desde las diferentes ramas de una confirmación nueva.
Por ejemplo, si usted y otra persona han editado el archivo styleguide.md en las mismas líneas de diferentes ramas del mismo repositorio de Git, recibirá un error de conflicto de combinación cuando intente combinar estas ramas. Debes resolver este conflicto de fusión con una confirmación nueva antes de que puedas fusionar estas ramas.
-
Abra TerminalTerminalGit Bash.
-
Navega en el repositorio de Git local que tiene el conflicto de fusión.
cd REPOSITORY-NAME
-
Genera una lista de los archivos afectados por el conflicto de fusión. En este ejemplo, el archivo styleguide.md tiene un conflicto de combinación.
$ git status > # On branch branch-b > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add <file>..." to mark resolution) > # > # both modified: styleguide.md > # > no changes added to commit (use "git add" and/or "git commit -a")
-
Abre tu editor de texto favorito, por ejemplo, Visual Studio Code, y dirígete al archivo que tiene conflictos de combinación.
-
Para ver el origen de un conflicto de combinación en el archivo, busque el marcador de conflicto
<<<<<<<
en el archivo. Al abrir el archivo en el editor de texto, verá los cambios de la rama HEAD o de base después de la línea<<<<<<< HEAD
. A continuación, verá=======
, que divide los cambios de los de la otra rama, seguido de>>>>>>> BRANCH-NAME
. En este ejemplo, una persona ha escrito "abrir una incidencia" en la rama HEAD o de base, y otra persona ha escrito "formula tu pregunta en IRC" en la rama comparada obranch-a
.If you have questions, please <<<<<<< HEAD open an issue ======= ask your question in IRC. >>>>>>> branch-a
-
Decide si quieres mantener únicamente los cambios de tu rama, mantener únicamente los cambios de las demás ramas, o hacer un cambio nuevo, el cual puede incorporar cambios de ambas ramas. Elimine los marcadores
<<<<<<<
,=======
y>>>>>>>
en conflicto, y realice los cambios deseados en la combinación final.En este ejemplo, ambos cambios se incorporaron en la fusión final:If you have questions, please open an issue or ask in our IRC channel if it's more urgent.
-
Agrega o lanza tus cambios.
git add .
-
Confirma tus cambios con un comentario.
git commit -m "Resolve merge conflict by incorporating both suggestions"
Ahora puede combinar las ramas en la línea de comandos, o bien insertar los cambios en el repositorio remoto en GitHub y combinar los cambios en una solicitud de incorporación de cambios.
Conflictos de fusión de archivos eliminados
Para resolver un conflicto de fusión causado por cambios contrapuestos en un archivo, cuando una persona elimina un archivo en una rama y otra persona edita el mismo archivo, debes decidir si eliminar o conservar el archivo eliminado en una confirmación nueva.
Por ejemplo, si ha editado un archivo, como README.md, y otra persona ha eliminado el mismo archivo en otra rama del mismo repositorio de Git, recibirá un error de conflicto de combinación cuando intente combinar estas ramas. Debes resolver este conflicto de fusión con una confirmación nueva antes de que puedas fusionar estas ramas.
-
Abra TerminalTerminalGit Bash.
-
Navega en el repositorio de Git local que tiene el conflicto de fusión.
cd REPOSITORY-NAME
-
Genera una lista de los archivos afectados por el conflicto de fusión. En este ejemplo, el archivo README.md tiene un conflicto de combinación.
$ git status > # On branch main > # Your branch and 'origin/main' have diverged, > # and have 1 and 2 different commits each, respectively. > # (use "git pull" to merge the remote branch into yours) > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add/rm <file>..." as appropriate to mark resolution) > # > # deleted by us: README.md > # > # no changes added to commit (use "git add" and/or "git commit -a")
-
Abre tu editor de texto favorito, por ejemplo, Visual Studio Code, y dirígete al archivo que tiene conflictos de combinación.
-
Decide si quieres conservar el archivo eliminado. Puede que quieras ver los últimos cambios hechos en el archivo eliminado en tu editor de texto.
Para volver a agregar el archivo eliminado a tu repositorio:
git add README.md
Para eliminar este archivo de tu repositorio:
$ git rm README.md > README.md: needs merge > rm 'README.md'
-
Confirma tus cambios con un comentario.
$ git commit -m "Resolve merge conflict by keeping README.md file" > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
Ahora puede combinar las ramas en la línea de comandos, o bien insertar los cambios en el repositorio remoto en GitHub y combinar los cambios en una solicitud de incorporación de cambios.