Suponiendo que su rama se llama master
tanto aquí como en forma remota, y que el mando a distancia se llama origin
que podría hacer:
git reset --hard <commit-hash>
git push -f origin master
Sin embargo , debe evitar hacer esto si alguien más está trabajando con su repositorio remoto y ha retirado sus cambios. En ese caso, sería mejor que revert las confirmaciones que no desea, y luego presionar de manera normal.
Actualización: ha explicado a continuación que otras personas han retirado los cambios que ha realizado, por lo que es mejor crear una nueva confirmación que revierte todos esos cambios. Hay una buena explicación de sus opciones para hacer esto en this answer from Jakub Narębski. Cuál es el más conveniente depende de cuántas confirmaciones desea revertir y qué método tiene más sentido para usted.
Desde de su pregunta, está claro que ya ha utilizado git reset --hard
para restablecer la rama master
, puede que tenga que empezar usando git reset --hard ORIG_HEAD
para mover su rama de vuelta a donde estaba antes. (Como siempre con git reset --hard
, asegúrese de que git status
esté limpio, que se encuentre en la rama derecha y que esté al tanto de git reflog
como una herramienta para recuperar confirmaciones aparentemente perdidas). También debe verificar que ORIG_HEAD
apunten hacia la derecha , con git show ORIG_HEAD
.
¿Estás seguro de que el 'origin/master' no ha sido extraído y presionado por otros usuarios?Cambiar la historia de un repositorio público (es decir, no local) es algo que desea evitar en todo momento. – vindia