¿Cómo eliminar las últimas n confirmaciones en Github y localmente?
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 log
que 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.
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í.
Si desea eliminar las 2 (dos) últimas confirmaciones, existe un comando sencillo para hacerlo:
git reset --hard HEAD~2
Puede cambiar 2
cualquier número de últimas confirmaciones que desee eliminar.
Y para enviar este cambio a remoto, debe hacer algo git push
con el parámetro force ( -f
):
git push -f
Sin embargo, no recomiendo ejecutar ningún git
comando -f
ni --hard
opciones 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
.
Lo siguiente me funciona
git reset HEAD~n
Elimina las últimas n
confirmaciones 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>