Reversión de cambios a confirmaciones anteriores desde el jefe de maestro desconectado

Mi origen / maestro de alguna manera obtuvo algunas fusiones no deseadas. Por lo tanto, estaba tratando de revertir el origen / maestro en la confirmación anterior. Mientras lo hacía, compré el control HEAD remoto y $ git reset --hard fcced95d565a4e54e81f15d1efeab5fdf7a483ca . Luego intenté básicamente llevar a cabo esta confirmación y ejecuté $ git push -f origin master . Sin embargo, hacer esto realmente trajo el origen / maestro al estado en el que mi local estaba y que está muy por detrás de donde quería revertir el compromiso para mi cabeza DESATACHADA DE maestro. ¿Cómo puedo rectificar este problema?

Suponiendo que aún no ha sobrescrito su twig master local, puede intentar lo siguiente:

 git checkout master git push --force origin master 

Esto supone que su master local está vivo y bien, y no está contaminado por lo que le ha hecho a su contraparte remota. Si también destruyó su sucursal master local, entonces necesitaría hacer más trabajo.

Primero, podemos usar una herramienta llamada el reflog para encontrar el commit que fue el HEAD anterior de master , antes de sobreescribirlo. Escriba git reflog , que desplegará una list de confirmaciones que tienen actividad reciente en los encabezados de las sucursales en su repository. Tendrás que pasar por esta list para encontrar el compromiso HEAD previo desde el master . Stack Overflow y el manual de Git cubren bien cómo navegar el reflog.

Luego, una vez que tenga el hash SHA-1 de la confirmación, solo haga lo siguiente desde el master :

 git reset --hard <SHA-1 of previous HEAD> 

Esto restablecerá el master local a la confirmación correcta. A continuación, realice otro impulso forzado para sobrescribir la twig remota:

 git push --force origin master