Recuperarse de perder cambios no confirmados con “git reset –hard”

6 minutos de lectura

avatar de usuario
jacob lyles

¿Hay alguna forma de recuperar los cambios no confirmados en el directorio de trabajo desde un git reset --hard HEAD?

  • No relacionado con Deshacer un reinicio de git –hard HEAD~1, porque aquí el cartel original está tratando de recuperar cambios no confirmados.

    usuario456814

    21 de julio de 2013 a las 14:55

  • Ver también Recuperar archivo agregado después de hacer git reset –hard HEAD^.

    usuario456814

    19 de mayo de 2014 a las 3:38

  • Véase también Accidentalmente revertido a maestro, cambios no confirmados perdidos.

    usuario456814

    19 de mayo de 2014 a las 3:39

avatar de usuario
conocido

respuesta de este SO

$ git reflog show

4b6cf8e (HEAD -> master, origin/master, origin/HEAD) [email protected]{0}: reset: moving to origin/master
295f07d [email protected]{1}: pull: Merge made by the 'recursive' strategy.
7c49ec7 [email protected]{2}: commit: restore dependencies to the User model
fa57f59 [email protected]{3}: commit: restore dependencies to the Profile model
3431936 [email protected]{4}: commit (amend): restore admin
033f5c0 [email protected]{5}: commit: restore admin
ecd2c1d [email protected]{6}: commit: re-enable settings app

# assuming you want to get back to 7c49ec7 (restore dependencies to the User model)

$ git reset [email protected]{2}

¡Has recuperado tu día! 🙂

  • Solo para agregar a esta respuesta, esto ayudaría a las personas que realmente habían realizado cambios que se descartaron mediante un restablecimiento completo.

    – Murki

    5 de agosto de 2014 a las 18:18

  • Genial, pero en mi caso los archivos desaparecieron por completo. Usando git checkout [email protected]{19} me permitió ver los archivos perdidos en un estado separado. luego usado git checkout -b new-branch-name para volver a agregarlos al repositorio en estado “adjunto”.

    – Búho Nocturno888

    2 oct 2016 a las 19:29

  • @ NightOwl888: Git newbie aquí y tuve el mismo problema de que mis archivos aún no estaban. ¿Podría explicar con más detalle cómo recuperó sus archivos en un estado “adjunto” (o podría explicar qué significa eso realmente)? ¡Muchas gracias!

    – OhDaeSu

    14/11/2016 a las 18:30

  • @ user3385759 – En Git, cuando usa el comando de pago en cualquier cosa que no sea una rama, entrará en un modo especial de “cabeza separada”. Esto significa que en realidad no está apuntando a una rama, pero puede ver lo que se registró en el estado de la entidad (en este caso, una entrada de registro). Desde ese estado, puede convertirlo en una rama “real” a la que puede volver usando git checkout -b new-branch-name. El libro Control de versiones pragmático usando Git es bueno para explicar Git en términos simples.

    – Búho Nocturno888

    14/11/2016 a las 19:53

  • ken y @NightOwl888, ¡ustedes acaban de salvar tres días de mi vida! ¡Te deseo felicidad y prosperidad!

    – Daniiar Abdiev

    27 de noviembre de 2021 a las 13:09

avatar de usuario
seje

no poder recuperar cambios no confirmados en general.

Cambios realizados previamente (git add) debe ser recuperable de los objetos de índice, por lo que si lo hizo, use git fsck --lost-found para localizar los objetos relacionados con él. (Esto escribe los objetos en el .git/lost-found/ directorio; a partir de ahí puedes usar git show <filename> para ver el contenido de cada archivo.)

Si no, la respuesta aquí sería: mire su copia de seguridad. Tal vez su editor/IDE almacene copias temporales bajo /tmp o C:\TEMP y cosas así.[1]

git reset [email protected]{1}

Esto restaurará al HEAD anterior

[1] empuje por ejemplo, almacena opcionalmente deshacer persistente, eclipse tiendas IDE Historia local; tales características podrían salvarte el culo **

  • El historial local de Eclipse y, además, dado que algunos cambios tenían más de 6 días, ¡mi copia de seguridad de Time Machine del historial local de Eclipse! Por alguna razón, la copia de seguridad de Time Machine de la carpeta administrada por git no contenía mis cambios anteriores.

    -cristiánbrodbeck

    31 de mayo de 2012 a las 4:31

  • Afortunadamente, tengo TimeMachine configurado para realizar copias de seguridad cada hora, por lo que pude sacar los archivos de la última copia de seguridad. Por lo que puedo decir, no recupera los archivos ocultos, por lo que debe copiar los archivos directamente desde el sistema de archivos.

    – gillytech

    13 de abril de 2017 a las 20:18

  • El IDE (IntelliJ) almacenó los cambios localmente, lo que salvó el día. ¡Gracias por el consejo!

    – progonkpa

    19 de junio de 2017 a las 20:16

  • git reset [email protected]{1} causó un error en el terminal powershell resultante error: unknown switch ``e' La forma de evitar esto es escapar de las llaves con comillas simples como esta: git reset '[email protected]{1}' porque los curlies tienen un significado diferente para powershell

    – Batú

    17 de diciembre de 2018 a las 2:13


  • De hecho, la historia local en Eclipse (Intellij en mi caso) me salvó el día al recuperar cambios no extraños, doc aquí para Intellij: blog.jetbrains.com/idea/2008/01/…

    – Ricardo

    25 de enero de 2019 a las 22:16

avatar de usuario
justin

accidentalmente corrí git reset --hard en mi repositorio hoy también mientras tengo cambios no confirmados también hoy. Para recuperarlo, corrí git fsck --lost-foundque escribió todos los blobs sin referencia en <path to repo>/.git/lost-found/. Como los archivos no estaban comprometidos, los encontré en el other directorio dentro del <path to repo>/.git/lost-found/. Desde allí, puedo ver los archivos no comprometidos usando git show <filename>copie los blobs y cámbieles el nombre.

Nota: Esto solo funciona si agregó los archivos que desea guardar en el índice (usando git add .). Si los archivos no estaban en el índice, se pierden.

  • Solo obtuve archivos con referencias de confirmación en lost-found. Pero entonces podría hacer git show para obtener contenidos.

    – Mitar

    17 de septiembre de 2013 a las 4:28


  • Solo para ahorrarle tiempo a alguien #!/bin/bash cd PATH_TO_PROJECT/.git/lost-found/other FILES=* COUNTER = 0 for f in $FILES do echo "Processing $f file..." git show $f > "PATH_TO_RECOVERY_DIRECTORY/$COUNTER.m" let COUNTER=COUNTER+1 done

    – rwolst

    22 de octubre de 2014 a las 14:08


avatar de usuario
Gabe

Sí, USTED PUEDE RECUPERARSE de un restablecimiento completo en git.

Usar:

git reflog

para obtener el identificador de su confirmación. Luego usa:

git reset --hard <commit-id-retrieved-using-reflog>

Este truco me salvó la vida un par de veces.

Puede encontrar la documentación de reflog AQUÍ.

avatar de usuario
Orcún

Mientras trabajaba en un proyecto local, quería moverlo a GitHub y luego crear un nuevo repositorio. Mientras intentaba agregar todos estos archivos al nuevo repositorio con .gitignore, accidentalmente agregué un archivo incorrecto y luego traté de borrarlo.

corrí git reset --hard origin/master

Luego, todos mis archivos locales se eliminaron porque el repositorio estaba vacío. Pensé que todo se había ido.

Esto funcionó para mí:

git reflog show
git reset [email protected]{1} 
git push 

avatar de usuario
isherwood

Si usa algo como IntelliJ:

En el menú contextual, elija Historial local y haga clic en Mostrar historial en el submenú:

La vista del historial local de un proyecto o carpeta le muestra todo lo que ha hecho durante los últimos días. En la columna Acción de la parte inferior del cuadro de diálogo, seleccione la acción que desea revertir. […] Al hacerlo, la parte superior del cuadro de diálogo muestra la vista de árbol de los archivos modificados. Si desea restaurar solo el archivo eliminado, independientemente de los otros cambios que se hayan realizado desde entonces, puede seleccionar el archivo Lost.txt en la vista de árbol y hacer clic en el botón Revertir.

http://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/

¡Esto acaba de sacar mi trasero del fuego!

avatar de usuario
guerravariuc

Lo acabo de hacer git reset --hard y perdí todos mis cambios no confirmados. Afortunadamente, uso un editor (IntelliJ) y pude recuperar los cambios del Historial local. Eclipse debería permitirte hacer lo mismo.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad