Saltar al contenido

git – Restablecer el control remoto a una determinada confirmación

octubre 17, 2021
apple touch icon@2

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.

close