Incorregrect Merge, en lugar de fusionar A con BI, se fusionó B con A en GIT LAB

En lugar de unir B (Rama) a A (Característica), fusioné A (Función) a B (Rama) en GIT LAB. Aquí hay una representación gráfica de lo que hice. Tengo esto como a continuación. Con esto, la "Branch A2" fusiona con la "feature B2" que no es lo que pretendía. PROBLEMA: ahora si continúo el desarrollo, la sucursal que tendrá que continuar es "feature B2" lugar de "Branch A2"

 Branch A ----A1------ A2 <-- last commit \ \ (merge into feature) Branch(feature) B -- -B1- - -- B2 <-- feature now contains Branch "A2" edits. 

Esto es lo que yo quería. Combinar "feature B2" en "Branch A2" ; De esta forma, cuando continúe con mi desarrollo, estaría en la "Branch A2" y no en la "feature B2"

 Branch(feature) B ----B1------ B2 <-- last feature commit \ \ (merge into Branch) Branch A -- -A1- - -- A2 <-- Branch now contains "B2" feature edits. 

¿Cuál es la forma más limpia de solucionar esto para poder get el Escenario 2 y continuar trabajando en la twig de la Sucursal "A2" lugar de la twig de la característica "B2" ? En lo que respecta a la function, ambos logran lo mismo si fusionaste A2-> B2 o B2-> A2.
Una forma de pensar es que puedo cambiar el nombre de la twig fusionada y llamarla twig A2

Asumiendo que sus cambios no fueron empujados aguas arriba, creo que

 git checkout feature git reset B1 --hard git checkout branch git merge feature 

debería hacer, donde B1 es la confirmación antes de la fusión.

Una forma de pensar es que puedo cambiar el nombre de la twig fusionada y llamarla twig A2

Cuando esté "hecho" con la function de todos modos, esa podría ser la solución más limpia en su caso.

 git branch -d branch branch-tmp # Delete branch git branch -m feature branch # Rename feature into branch 

Debería poder revertir a la confirmación antes de la fusión en su twig (consulte ¿Cómo revertir el repository de Git a una confirmación previa? ) Y luego vuelva a realizar la fusión en la dirección correcta.

Solo para el beneficio de otros que puedan pisar este hilo, aquí está mi discurso. Nota: Todas las manipulaciones se realizaron en ** Local Repo aunque puede hacerlo en ** remote Repo en Git Lab . Una vez que la fusión se completó como se muestra en el diagtwig 1 en el hilo original:

  1. Crea una nueva twig desde la twig fusionada PERO llámala como Rama A o cualquier nombre que inicialmente quisiste que fuera. git branch <branch name eg Branch A>
  2. Verifique la sucursal git checkout <branch name eg Branch A> . Ahora su nueva sucursal prestada y su sucursal B serían esencialmente las mismas ya que no hay cambios de código desde la última fusión de sucursales.
  3. Elimine la twig donde las fusiones fueron tanto locales como remotas. git push origin --delete <your remote branch name eg feature A> y siga con git branch -d <your local branch name eg feature A>
  4. Confirma si esto es lo que quieres antes de pasarlo a repository remoto por git branch --list y luego git branch -a . No te preocupes por el historial, incluso si eliminas estas twigs, ya que cuando presionas tus compromisos la próxima vez mostrará que hubo una combinación de código y tu twig más reciente, Branch A , tendrá todos tus cambios justo al fusionar la sucursal. Funciona casi como pointers en lenguaje C. El nombre de la variable ha desaparecido, pero ya que copió el puntero a otro nombre, la dirección de su cambio sigue intacta.