git volver a una confirmación anterior antes de restablecer duro

Cambié un poco de código, luego corrí

git add . git commit -m "message1" 

Pero después de eso, lo hice

 git reset hard git pull git push 

(El empuje en realidad no hizo nada, por supuesto).

Ahora quiero recuperar el estado de mis files en el punto de commit "message1". ¿Cómo puedo hacer eso?

git reset hard restablece el índice (no el directory de trabajo) al estado de la twig llamada hard . Entonces, nada realmente cambió: puedes hacer un simple git reset para simplemente restablecer el índice. Nada más ha cambiado de todos modos.

Si hiciste un git reset --hard entonces eso es algo diferente. Esto restablecerá el índice y los cambios no confirmados en el directory de trabajo al estado de HEAD, es decir, el último commit de su twig actual. Como realizó una confirmación directamente antes de ese command, tampoco pierde nada en caso de que haya incluido todos los cambios de su directory de trabajo en esa confirmación. Si no lo hizo, no tiene suerte, y los cambios no comprometidos que nunca llegaron al índice se pierden.

El git pull searchá desde el control remoto y fusionará cualquier cambio en su twig, por lo que aquí es donde algo realmente podría haber cambiado. Como realizó un commit localmente, hay dos casos: Usted estuvo actualizado y nada cambió; hubo cambios en el control remoto y Git creó una fusión de compromiso. En este último caso, puede revertirlo usando git reset --hard [email protected]{1} . También puede verificar el reflog usando git reflog para ver a dónde HEAD apuntaba previamente.

En cuanto al git push , no es obvio que no haga nada. En realidad, como hiciste un commit localmente, debería haber hecho algo. Debería haber empujado su confirmación y una eventual fusión (como se indicó anteriormente) al control remoto. En ese caso, no se recomienda volver atrás (con el command anterior) para deshacer esos cambios, ya que nunca debe eliminar confirmaciones que ya haya publicado.

Simplemente use git reflog . Mostrará el historial completo de lo que hizo en su repository.
Una vez que rastree el compromiso que desea revertir para verificarlo, abra una nueva twig (ya que estará en HEAD separado) y continúe su trabajo desde ese punto.

Segunda cosa

Una vez que agregue contenido al alijo (índice), siempre podrá recuperarlo siempre que su gc no se haya ejecutado. puedes usar git fsck para encontrar el SHA-1 de esos files de dangaling y recuperarlos usando `git cat-file -p 'para ver el contenido y copyrlo a tus necesidades.