Suponiendo que su rama se llama mastertanto aquí como remotamente, y que su control remoto se llama origin, puede hacer lo siguiente:
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 revertir las confirmaciones que no desea y luego presionar de manera normal.
Actualización: ha explicado a continuación que otras personas han eliminado los cambios que ha introducido, por lo que es mejor crear una nueva confirmación que revierta 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 desea revertir y qué método tiene más sentido para usted.
Como de su pregunta está claro que ya ha utilizado git reset --hardpara restablecer su mastersucursal, es posible que deba comenzar a usar git reset --hard ORIG_HEADpara mover su sucursal a donde estaba antes. (Como siempre con git reset --hard, asegúrese de que git statusesté limpio, que esté en la rama correcta y que sea consciente de que git refloges una herramienta para recuperar confirmaciones aparentemente perdidas). También debe verificar que ORIG_HEADapunta a la confirmación correcta, con git show ORIG_HEAD.
Solución de problemas:
Si recibe un mensaje como " ! [Control remoto rechazado] a60f7d85 -> maestro (gancho previo a la recepción rechazado) "
entonces debe permitir la reescritura del historial de sucursal para la sucursal específica. En BitBucket, por ejemplo, decía "No se permite reescribir el historial de sucursales". Hay una casilla de verificación llamada Allow rewriting branch historyque debe marcar.
origin/masterde que otros usuarios no te han tirado y empujado? Cambiar el historial de un repositorio público (es decir, no local) es algo que desea evitar en todo momento.