1

Pasa esto, tengo dos ramas principales: master y desarrollo.

Hasta el momento master tenía un commit (el del inicio del proyecto) y mi rama desarrollo tenía varios commits.

Mi flujo es este: Creo una rama cada que voy a hacer algún cambio y al terminar le hago un merge a desarrollo

$ git checkout desarrollo && git merge rama-de-cambio

Accidentalmente se realizó el merge a master usando

$ git checkout master && git merge rama-de-cambio

¿Cúal es la manera de regresar a master a su estado original y poder hacer mi merge a mi rama de desarrollo?

akko
  • 2,378
  • 2
  • 27
  • 56

2 Answers2

1

La versión corta:

1. Obtener los hash ids de los últimos commits.
2. Retornar al commit deseado.
3. Enviar los cambios al repositorio.
4. Actualizar repositorios.

Este sería el procedimiento en detalle:

Si por alguna razón necesitamos revertir los archivos de nuestro repositorio de Git a un push anterior, debemos seguir los siguientes pasos.

1. Obtener hash ids de los últimos commits. En necesario Identificar el hash id del commit al que queremos regresar, con el siguiente comando vamos a ver los últimos 10 ids:

?$ git log -10 --pretty="%H"

30ace57438659c6a715db441ffc6751f385db667 484121a5ed21e8b842ffe61783fde059103185b3 996ee5f0aabd18d14a73e0181780dcc9191337f4 2b0ea751d69c84b909b3011ba5de865125d209b2 944385404a3468fe6665be2d8cf1a71a5c995196 6b832d19e44d298d60c99a382f9e7e282c9c16f2 fad00716beff7b48890f0a96d82780bea685f39e 4339ddc09724d93bac456221a0c369c3d5a62c89 cf9a82f09bb799c2449854ba7d33ddf2cfff3b84 adf47c09992f147ab2b631713cc8dd612f21e83d

2. Retornar al commit deseado. Cunando hayamos identificado el commit al que deseamos regresar nuestro repositorio debemos ejecutar un comando similar al siguiente.

?$ git reset --hard 484121a5ed21e8b842ffe61783fde059103185b3

HEAD is now at 484121a

3. Enviar los cambios al repositorio. Ahora debemos enviar los cambios al repositorio con el siguiente comando.

?git push --force

4. Actualizar repositorios. Si tenemos algún clone del provecto en otro lugar, debemos hacer checkout del commit al que deseamos volver ejecutando el siguiente comando.

?git checkout 484121a5ed21e8b842ffe61783fde059103185b3

Espero les sea de utilidad.

fuente original:

http://www.7sabores.com/blog/como-revertir-un-push-git

Jorgesys
  • 103,630
  • 13
  • 52
  • 124
vifrac
  • 99
  • 9
0

lo que debes de hacer es localizar el commit guardado en la rama-de-cambio antes de hacer el merge y luego

git reset --hard <commit-rama-de-cambio>