¿Cómo eliminar las últimas n confirmaciones en Github y localmente?

Resuelto Ivan Fernandez asked hace 12 años • 5 respuestas

Estoy intentando eliminar las últimas 2 confirmaciones de uno de mis repositorios de GitHub. Lo intenté como se sugiere aquí : git push -f origin HEAD^^:master. Parece que funciona, ya que se eliminan las dos últimas confirmaciones.

Luego los eliminé de mi repositorio local con git rebase -i HEAD~2. Elimino las líneas que están relacionadas con esas confirmaciones y verifico git logque se hayan eliminado correctamente.

Después de eso, hago algunos cambios en mi repositorio local, hago una nueva confirmación y envío a GitHub. El problema es que, en mi cuenta de GitHub, tengo las dos confirmaciones anteriores que intenté eliminar.

Creo que el problema está en mi repositorio local, porque si clono mi repositorio de Github en mi local y hago algunos cambios aquí, cuando envío una nueva confirmación, esas confirmaciones antiguas no se envían a GitHub.

Ivan Fernandez avatar Apr 14 '12 19:04 Ivan Fernandez
Aceptado

Para eliminar las dos últimas confirmaciones localmente, sugeriría usar:

git reset --hard HEAD^^

Rebase es una operación completamente diferente que no te ayudará aquí.

KL-7 avatar Apr 14 '2012 12:04 KL-7

Si desea eliminar las 2 (dos) últimas confirmaciones, existe un comando sencillo para hacerlo:

git reset --hard HEAD~2

Puede cambiar 2cualquier número de últimas confirmaciones que desee eliminar.

Y para enviar este cambio a remoto, debe hacer algo git pushcon el parámetro force ( -f):

git push -f

Sin embargo, no recomiendo ejecutar ningún gitcomando -fni --hardopciones involucradas si hay nuevas confirmaciones en el control remoto (Github) después de estas confirmaciones que desea eliminar. En ese caso, utilice siempre git revert.

Dherik avatar Aug 03 '2016 13:08 Dherik

Lo siguiente me funciona

git reset HEAD~n

Elimina las últimas nconfirmaciones del repositorio local, ya que HEAD^elimina solo una. Si necesita eliminar estos cambios desde el control remoto, es posible que deba forzar la inserción, ya que estará detrás del control remoto.

git push -f origin <branch>
Sial01 avatar Aug 02 '2016 14:08 Sial01