Sobrescribí mi repository completo en Git y parece que no puedo regresar a mis compromisos anteriores

Rompí algunos files localmente y los llevé a mi repository, y quería volver a una versión anterior cuando me di count de mi error. Hice algunas búsquedas y encontré una pregunta similar aquí, así que seguí la respuesta e hice lo siguiente:

git log git reset --hard <hash> git push -f origin master 

Ahora, estoy usando Github para mi Universidad y antes había retirado las soluciones a una tarea anterior del repository de Profesores. Supongo que elegí el hash de la solución Professors, cuando ejecuté el git reset --hard porque mi repository ahora dice que fue escrito por el profesor, tiene todos los viejos files de solución y ninguno de mis propios files. Todo fue reemplazado localmente también, y el git log solo muestra los compromisos del repository de soluciones por parte del profesor. ¿Hay alguna forma de recuperar mis compromisos anteriores?

Puede usar git reflog para regresar antes de un restablecimiento git reflog .

Ejecutar git reflog producirá algo como esto:

 f735139 HEAD@{0}: reset: moving to HEAD~1 a76edca HEAD@{1}: commit: second commit f735139 HEAD@{2}: commit (initial): initial commit 

Puede verificar la confirmación antes del reinicio de esta manera:

 git checkout HEAD@{1} 

Recibirá una advertencia de cabeza desprendida, por lo que debe crear una nueva twig antes del reinicio:

 git checkout -b <new branch name> 

Ahora tendrá una sucursal con todo antes de su restablecimiento completo.

Si desea retroceder en el time en el futuro, crearía una nueva bifurcación en la confirmación que restableció. Podrías hacerlo de esta manera:

 git checkout <sha-1 hash of the commit you reset to> git checkout -b <new branch name> 

De esta forma, deja su twig principal sola y tiene una nueva twig en un punto anterior.


EDITAR: Dado que desea fusionar los cambios que deshacen un reinicio forzado en el maestro, le aconsejo fusionar los cambios remotos y descartarlos. Prueba esto:

 git fetch origin master git merge FETCH_HEAD -s ours 

Deberías poder empujar después de eso.