Esta versión de GitHub Enterprise se discontinuó el 2021-09-23. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener un mejor desempeño, más seguridad y nuevas características, actualiza a la última versión de GitHub Enterprise. Para obtener ayuda con la actualización, contacta al soporte de GitHub Enterprise.

Resolver un conflicto de fusión con la línea de comando

Puedes resolver conflictos de fusión con la línea de comando y un editor de texto.

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, consulta "Acerca de los conflictos de fusión".

Sugerencia: Puedes utilizar el editor de conflictos en GitHub Enterprise Server para resolver conflictos de fusión de cambios de líneas contrapuestos entre ramas que son parte de una solicitud de extracción. Para obtener más información, consulta "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 editaron el archivo styleguide.md en las mismas líneas de diferentes ramas del mismo repositorio de Git, recibirás un error de conflicto de fusión cuando trates de fusionar estas ramas. Debes resolver este conflicto de fusión con una confirmación nueva antes de que puedas fusionar estas ramas.

  1. Abre la TerminalTerminalGit Bash.

  2. Navega en el repositorio de Git local que tiene el conflicto de fusión.

    cd REPOSITORY-NAME
  3. Genera una lista de los archivos afectados por el conflicto de fusión. En este ejemplo, el archivo styleguide.md tiene un conflicto de fusión.

    $ git status
    > # On branch branch-b
    > # You have unmerged paths.
    > #   (fix conflicts and run "git commit")
    > #
    > # Unmerged paths:
    > #   (use "git add ..." to mark resolution)
    > #
    > # both modified:      styleguide.md
    > #
    > no changes added to commit (use "git add" and/or "git commit -a")
  4. Abre tu editor de texto preferido, como Atom, y navega hasta el archivo que tiene los conflictos de fusión.

  5. Para ver el origen de un conflicto de fusión en tu archivo, busca el archivo para el marcador de conflicto <<<<<<<. Cuando abras el archivo en tu editor de texto, verás los cambios desde la rama HEAD (encabezado) o base después de la línea <<<<<<< HEAD. Luego verás =======, que separa tus cambios de los cambios en la otra rama, seguido de >>>>>>> BRANCH-NAME. En este ejemplo, una persona escribió "abrir una propuesta" en la rama base o HEAD (encabezado), y otra persona escribió "haz tu pregunta en IRC" en la rama de comparación o branch-a.

    If you have questions, please
    <<<<<<< HEAD
    open an issue
    =======
    ask your question in IRC.
    >>>>>>> branch-a
    
  6. 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. Borra los marcadores de conflicto <<<<<<<, =======, >>>>>>> y realiza los cambios que quieras en la fusión final.En este ejemplo, ambos cambios se incorporaron en la fusión final:

    Si tienes preguntas, abre una propuesta o consulta en nuestro canal IRC si es más urgente.
  7. Agrega o almacena tus cambios.

    $ git add .
  8. Confirma tus cambios con un comentario.

    $ git commit -m "Conflicto de fusión resuelto incorporando ambas sugerencias".

Ahora puedes fusionar las ramas en la línea de comando o subir tus cambios a tu repositorio remoto en GitHub Enterprise Server y fusionar tus cambios en una solicitud de extracción.

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 editaste un archivo, como README.md, y otra persona eliminó el mismo archivo en otra rama del mismo repositorio de Git, recibirás un error de conflicto de fusión cuando trates de fusionar estas ramas. Debes resolver este conflicto de fusión con una confirmación nueva antes de que puedas fusionar estas ramas.

  1. Abre la TerminalTerminalGit Bash.

  2. Navega en el repositorio de Git local que tiene el conflicto de fusión.

    cd REPOSITORY-NAME
  3. Genera una lista de los archivos afectados por el conflicto de fusión. En este ejemplo, el archivo README.md tiene un conflicto de fusió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 ..." as appropriate to mark resolution)
    > #
    > #   deleted by us:   README.md
    > #
    > # no changes added to commit (use "git add" and/or "git commit -a")
  4. Abre tu editor de texto preferido, como Atom, y navega hasta el archivo que tiene los conflictos de fusión.

  5. 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'
  6. Confirma tus cambios con un comentario.

    $ git commit -m "Resolved merge conflict by keeping README.md file."
    > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d

Ahora puedes fusionar las ramas en la línea de comando o subir tus cambios a tu repositorio remoto en GitHub Enterprise Server y fusionar tus cambios en una solicitud de extracción.

Leer más