es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es un ejemplo mínimo de “git rebase” donde el mismo conflicto reaparece?

En el pasado, me he encontrado con el escenario en el que un único git rebase resultó en tener que resolver el mismo conflicto varias veces.

Para comprender mejor las condiciones previas necesarias para causar este escenario, ¿cómo puedo crear un ejemplo mínimo que recrea este escenario (donde tengo que resolver el mismo conflicto dos veces)?

Por ejemplo:

$ git checkout feature-branch
$ git rebase master-branch
CONFLICTO (contenido): Conflicto de combinación en mi-archivo
(resolver manualmente el conflicto en mi-archivo)
$ git add mi-archivo
$ git rebase --continue
(otro conflicto exactamente igual en mi-archivo)
CONFLICTO (contenido): Conflicto de combinación en mi-archivo

(Parece recordar que sospechaba que el escenario que encontró tenía combinaciones de fusiones en la rama característica y / o rama principal y que era una condición previa para el conflicto repetitivo).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para recrear el escenario donde una sola rebase de git resultó en tener que resolver el mismo conflicto varias veces, puedes seguir los siguientes pasos:

    1. Crear un nuevo repositorio de git.

    $ mkdir git-rebase-test

    $ cd git-rebase-test

    $ git init

    1. Crear un nuevo archivo en el repositorio.

    $ touch my-file

    1. Agrega algún contenido al archivo y haz commit de los cambios.
    $ echo "Primera línea" > my-file
    
    $ git add my-file
    
    $ git commit -m "Agregar primera línea a my-file"
    
    1. Crear una nueva rama llamada “feature-branch”.

    $ git checkout -b feature-branch

    1. Agregar nuevo contenido al archivo y hacer commit de los cambios.
    $ echo "Segunda línea" >> my-file
    
    $ git add my-file
    
    $ git commit -m "Agregar segunda línea a my-file"
    
    1. Cambia de rama a la rama principal y agrega nuevo contenido al mismo archivo.

    $ git checkout master

    $ echo "Tercera línea" >> my-file
    
    $ git add my-file
    
    $ git commit -m "Agregar tercera línea a my-file"
    
    1. Cambia de nuevo a la rama feature-branch.

    $ git checkout feature-branch

    1. Ahora, fusiona la rama principal en la rama feature-branch.

    $ git merge master

    1. Resuelve el conflicto de fusión en my-file.
    $ git status
    
    $ git mergetool my-file
    
    1. Agrega los cambios resueltos y haz commit de la fusión.
    $ git add my-file
    
    $ git commit -m "Resolver conflicto de fusión en my-file"
    
    1. Finalmente, realiza una rebase de la rama feature-branch sobre la rama principal.

    $ git rebase master

    1. Resuelve de nuevo el conflicto en my-file.
    $ git status
    
    $ git mergetool my-file
    
    1. Agrega los cambios resueltos y continúa la rebase.
    $ git add my-file
    
    $ git rebase --continue
    

    Ahora, has recreado satisfactoriamente el escenario donde una sola rebase de git resultó en tener que resolver el mismo conflicto varias veces.

Comments are closed.