Estoy tratando de eliminar los últimos 2 commits de uno de mis repositorios de GitHub. He tratado 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 eliminen correctamente.
Después de eso, hago algunos cambios en mi repositorio local, realizo una nueva confirmación y presiono a GitHub. El problema es que, en mi cuenta de GitHub, tengo las dos confirmaciones anteriores que he intentado eliminar.
Creo que el problema está en mi repositorio local, porque si clono mi repositorio Github en mi local y hago algunos cambios aquí, cuando presiono una nueva confirmación, esas viejas confirmaciones no se envían a GitHub.
¿Alguna idea?
git reset --hard HEAD^4
ogit reset --hard HEAD~4
. Sin embargo, las cosas pueden complicarse un poco si su historial contiene fusiones. Puede encontrar más información sobre cómo especificar revisiones en la sección correspondiente aquí .git reset --hard HEAD~7
, pero corrígeme si me equivoco.Si desea eliminar las 2 (dos) últimas confirmaciones, hay un comando fácil para hacerlo:
Puede cambiar el
2
número de las últimas confirmaciones que desea eliminar.Y para llevar este cambio a remoto, debe hacer un a
git push
con el parámetro force (-f
):Sin embargo, no recomiendo hacer ningún
git
comando-f
u--hard
opciones involucradas si hay nuevas confirmaciones en remoto (Github) después de estas confirmaciones que desea eliminar. En ese caso, siempre usegit revert
.fuente
hard
comando, perdiste estas dos confirmaciones. Si desea guardar los cambios, cree undiff
archivo de estas confirmaciones antes de aplicar el restablecimiento.git reset HEAD~5
(no utilizarhard
). De esta forma obtendrá sus cambios en un estado por etapas (es decir, no comprometido). Para mí ver esta respuesta .Lo siguiente funciona para mi
Elimina las últimas
n
confirmaciones del repositorio local, ya queHEAD^
elimina solo una. Si necesita eliminar estos cambios del control remoto, es posible que deba forzar el empuje, ya que estará detrás del control remoto.fuente