Suponiendo que su rama se llame master
tanto aquí como de forma remota, y que su control remoto se llama origin
Podrías hacerlo:
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 extraído sus cambios. En ese caso, sería mejor revertir las confirmaciones que no desea, luego presione normalmente.
Actualizar: ha explicado a continuación que otras personas han realizado los cambios que ha impulsado, por lo que es es mejor crear una nueva confirmación que revierte todos esos cambios. Hay una buena explicación de sus opciones para hacer esto en esta respuesta de Jakub Narębski. Cuál es más conveniente depende de cuántas confirmaciones desee revertir y qué método tiene más sentido para usted.
Dado que a partir de su pregunta, está claro que ya ha utilizado git reset --hard
para restablecer tu master
rama, es posible que deba comenzar usando git reset --hard ORIG_HEAD
para mover su rama de regreso a donde estaba antes. (Como siempre con git reset --hard
, Asegúrate de eso git status
está limpio, que estás en la rama correcta y que eres consciente de git reflog
como herramienta para recuperar confirmaciones aparentemente perdidas). ORIG_HEAD
apunta a la confirmación correcta, con git show ORIG_HEAD
.
Solución de problemas:
Si recibe un mensaje como «! [remote rejected] a60f7d85 -> maestro (gancho de pre-recepción rechazado)»
luego debe permitir la reescritura del historial de la rama para la rama específica. En BitBucket, por ejemplo, decía «No se permite reescribir el historial de la rama». Hay una casilla de verificación llamada Allow rewriting branch history
que tienes que comprobar.