Blog

Commits en rama incorrecta

Commits en rama incorrecta

Si el lector lleva tiempo utilizando repositorios, seguro que alguna vez ha hecho commit en una rama incorrecta.

Si este error sucede antes de hacer push, se puede solventar con alguna técnica que reescriba la historia. Por ejemplo, rebasing o cherry-picking. Desafortunadamente, una vez hecho el push, reescribir la historia implica avisar a todos los usuarios del repositorio, para que reclonen. Esta opción no es factible en grupos grandes de programadores.

Una solución puede ser utilizar graft en la rama correcta junto con revert en la incorrecta.

 1147  hg shelve -n "Cambios para poner en rama default"
 1148  hg status
 1149  hg update default
 1150  history
 1151  hg branch deploy_php_players
 1152  hg branch
 1153  hg graft -D 02de0b8::35613bc
 1154  hg update secuencial_con_ordenacion
 1155  hg revert -a -r 305fd2f
 1156  hg commit -m "Backout commits desde 02de0b8 hasta 35613bc porque ésta no es su rama"

Éste es el estado antes:

Antes del apaño
Antes del apaño

Y éste depués:

Después del apaño
Después del apaño

Se han repetido los commits en la rama deploy_php_players y hemos hecho un revert (en el comentario he puesto backout pero es revert realmente) de los commits que no debían estar en secuencial_con_ordenacion. Puesto que revert elimina todos lo cambios, merge no causó conflictos.

Estado después de merge. No hubo conflictos.
Estado después de merge. No hubo conflictos.

Referencias: