ejemplo - git reset
Abordado la antigua rebase de git y compromisos perdidos desde que comenzó la rebase (2)
¡Mierda! Hace aproximadamente una semana, estaba reescribiendo algunos commits mientras trataba de limpiar mi repositorio, y aparentemente no terminé realmente. Hoy, una semana y varios commits más tarde, fui a rebase para reordenar algunos commits a partir de hoy, y me dijeron que ya estaba en medio de una rebase.
Eso debería haber sido una señal para copiar mi repositorio por si acaso. Pero no lo hice ... en cambio ejecuté git rebase --abort
que sonaba justo en ese momento. Bueno, eso no estaba bien. Anuló la rebase de hace una semana y restableció la HEAD del maestro a la anterior. ¡Tonto!
Tengo varias otras ramas que son bastante recientes, y he presionado a distancia muchas veces, pero los cambios más recientes parecen haber desaparecido para siempre. No poseo el nivel apropiado de git-fu para saber si hay alguna forma de recuperar mis cambios.
¿Estoy jodido?
EDITAR - ¡GUAU! ¡Gracias chicos! git reflog
es increíble! Estoy completamente recuperado ... lección aprendida. Marcado La respuesta de Tchalvak fue aceptada por ser la primera en publicar.
Deberías poder obtener el SHA1 de tus confirmaciones más recientes (que desapareció después de la rebase --abort) con un git reflog
.
Entonces podrá restablecer su rama actual a esos SHA1
# Suppose the old commit was HEAD@{2} in the ref log
git reset --hard HEAD@{2}
Es un poco como " Deshacer un git reset --hard HEAD~1
".
Consulte también la " guía ilustrada para recuperar compromisos perdidos con Git ", para otros ejemplos de recuperación.
Verificar git reflog
. Puede retroceder en el tiempo utilizando esos valores hash de confirmación como referencia en casi todos los casos.
También físicamente copié el directorio de git repo en otro lugar como un lugar para hacer pruebas preliminares para ver qué funciona, de esa manera puedes jugar con lo que quieras sin perder archivos sin seguir o poner las cosas en un estado que no puedes volver. de.