¿Nunca has hecho una transacción en git y te has dado cuenta que deberías haberla puesto en otra rama? Yo lo hago todos los días.

Afortunadamente, es posible arreglar esto y dejarlo tal como si hubieras sido tan estrictamente riguroso en el control del árbol de cambios como se supone que se debe ser. La verdad es que yo sigo sin entender muchos detalles de cómo funciona git, pero parece que cualquier cosa que puedas imaginar o necesitar puede hacerse.

Originalmente reproduje aquí los pasos para mover una transacción ya hecha hacia una nueva rama, tal como se indica a continuación. A posteriori recurrí a este mismo recurso para mover una transacción a otra rama ya existente, cuyos pasos incluyo en el segundo ejemplo.

Los pasos (aparentemente más correctos) para mover la última transacción a una nueva rama son los siguientes:

git co -b nueva_rama HEAD~1
git branch --set-upstream-to=rama_original
git cherry-pick ..rama_original
git branch --force rama_original rama_original~1

Créditos para esta respuesta en StackOverflow: Move the most recent commit(s) to a new branch with Git

Si lo que se quiere es mover la transacción a una rama ya existente se haría así:

git co rama_destino
git cherry-pick rama_original~1..rama_original
git branch --force rama_original rama_original~1

Si no es solo una transacción sino varias seguidas se podría hacer cambiando el ~1 utilizado por el número de transacciones a mover.

¡Ojo!, si en el camino se han creado nuevas ramas o si se han subido (push) los cambios a un repositorio se pueden originar graves complicaciones, do it at  your own risk.

 

 

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes utilizar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.