¿Cómo eliminar el último n commit en Github y localmente?

Estoy intentando eliminar los últimos 2 commits en uno de mis repositorys de GitHub. He intentado como se sugiere aquí : git push -f origen HEAD ^^: master. Parece que funciona, las dos últimas confirmaciones se eliminan.

Luego los borré de mi repository local con git rebase -i HEAD ~ 2. Elimino las líneas que están relacionadas con esas confirmaciones y verifico con git log que se eliminaron correctamente.

Después de eso, realizo algunos cambios en mi repository local, realizo una nueva confirmación y paso a GitHub. El problema es que en mi count de GitHub tengo los dos compromisos anteriores que he intentado eliminar.

Creo que el problema está en mi repository local porque si clono mi repository de Github en mi local, y hago algunos cambios aquí cuando presiono una nueva confirmación, los commits antiguos no se envían a GitHub.

¿Alguna idea?

Para eliminar las últimas dos confirmaciones localmente, te sugiero que utilices:

git reset --hard HEAD^^ 

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

Si desea eliminar los 2 (dos) últimos commits, hay un command fácil para hacer eso:

 git reset --hard HEAD~2 

Puede cambiar el 2 para cualquier cantidad de últimos commits que quiera eliminar.

Y para llevar este cambio a control remoto, necesita hacer un git push con el parámetro force ( -f ):

 git push -f 

Sin embargo, no recomiendo hacer ningún command de git con las opciones -f o --hard implicadas si hay nuevas confirmaciones en el control remoto (Github) después de que este confirme que desea eliminar. En ese caso, siempre use git revert .

Lo siguiente funciona para mí

 git reset HEAD~n 

Elimina las últimas n confirmaciones del repository 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>