Git Commit durante Git Rebase: ¿qué sucede realmente?

Estoy buscando una buena descripción de lo que sucede si uno se compromete durante la rebase y cómo esto podría 'revertirse' de una manera fácil.

Consideremos un escenario, en el que se vuelve a basar un compromiso grande. Durante la rebase, aparece un conflicto y el usuario comienza a fusionar los cambios. Ahora, imagina un escenario en el que casi habías terminado, pero no llamaste a git rebase –continuar – por la razón que sea (ya sea un fin de semana largo o similar ). La próxima semana usted acaba de reanudar el trabajo, aún durante la rebase. Finalmente, llamas a git commit –amend para anexar los cambios al último commit y … terminan en el commit en el que estabas reescribiendo.

Naturalmente, siempre puede verificar el compromiso desde el que comenzó a trabajar y "piratear su path" – por ejemplo, tratando de copyr todos los files de su modificación, pero eso puede hacer que los cambios se introduzcan mientras tanto.

¿Hay una manera limpia y buena de arreglar esto? Este es un estado particular del que debería tener cuidado y no quiero terminar en él, pero todavía sucede de vez en cuando, y termino pasando todo un día tratando de aclarar las cosas.

Realmente agradecería toda ayuda y sugerencias. ¡Gracias!

Hay dos soluciones propuestas para esta situación.

  • La primera solución es volver a establecer el resultado final en la confirmación base original . esto requeriría que resolvieras conflictos de fusión similares una vez más, pero cuando hayas terminado tu compromiso debería volver a la normalidad.

  • La solución alternativa, que funcionó para mí, fue la de derivar el mismo punto que la confirmación que le encomendaron (lleva el SHA, que debe usarse como una base de pago). A continuación, cree una nueva twig e invoque git merge --no-ff --no-commit --strategy=theirs other_branch , donde * other_branch * es la que tiene commit desafortunado.