2012-03-17 35 views
16

digamos que ayer hice algunos cambios en mi rama principal, y olvidé agregarlos, confirmarlos. y en la mañana hice¿Todavía es posible restaurar los archivos borrados no procesados ​​en git?

git reset --hard 

¿es posible restaurar los archivos eliminados en esta situación?

+1

Si le pasó a 'git add' estos archivos en algún momento, incluso si nunca los han cometido, que todavía se cuelgan alrededor como gotas hasta que son recogidos de la basura (en dos semanas) . 'git fsck' mostrará los objetos como [colgantes o inalcanzables] (https://stackoverflow.com/a/36671659/712526). A continuación, puede usar 'git cat-file -p deadbeef> old-file-name' para restaurarlos. – jpaugh

+0

([La respuesta de Pod] (https://stackoverflow.com/a/45815093/712526) ya lo cubre, ¡uf!) – jpaugh

+0

Posible duplicado: https://stackoverflow.com/q/25791533/712526 – jpaugh

Respuesta

42

Algunos IDEs mejores mantienen un registro de sus archivos como un historial local. Si eliminó archivos externamente (por ejemplo, git reset), debería poder hacer clic en su IDE en el directorio principal y seleccionar "Comparar con historial local".

he usado esta función con éxito en PHPStorm IDE cuando mis archivos sin seguimiento fueron eliminados por alguna utilidad ...

+4

Para Eclipse, navegue a la carpeta/paquete en el que se encontraba el archivo (Explorador de proyectos o vista del Explorador de paquetes), haga clic con el botón derecho y seleccione 'Restaurar desde historial local ...' en el menú contextual. –

+2

omg ... Me salvaste la vida. Estaba usando 'git reset --hard' en un proyecto de compromiso cero, lo que significa' git fsck --lost-found' no funciona. Afortunadamente, leí tu respuesta y uso 'revert history' en WebStorm y obtuve con éxito los códigos borrados ... –

+2

Siempre me alegra oír que mi respuesta contribuyó a un" final feliz ":) –

11

No ................... No lo es.

4

git reset --hard es un comando muy peligroso, así que tenga cuidado cuando se utiliza la próxima vez :)

Si usted no tiene ningún commit para esos archivos, parece que no tienen ninguna posibilidad restaurarlos.

De lo contrario, el comando de volver a generar puede ayudarlo.

1

No se puede acceder a la versión anterior de los archivos borrados sin seguimiento de Git, ya que, de coruse, se no existe. Me gustaría recuperarlos de alguna copia de seguridad (¿tal vez hay archivos de copia de seguridad ocultos dejados por ide/editor?), O, como alternativa, evitaría trabajar demasiado en ese sistema de archivos y comenzar a buscar herramientas de recuperación.

+1

¡Buena llamada al editor! Había descartado por accidente los cambios sin seguimiento de un archivo (maldición de la aplicación Github) pero me di cuenta de que todavía tenía el archivo abierto en Atom y simplemente podía presionar "deshacer" para recuperar mis cambios. – henrebotha

+0

@henrebotha, hola! esto acaba de ocurrir conmigo, pero desafortunadamente no tuve mi átomo abierto en el punto de reinicio completo de git, ¿conoces alguna forma en la que pueda ser salvado? Muy tontamente, tenía toneladas de cosas en mis archivos sin seguimiento. –

+0

@ gdad-s-river Todavía deberías poder abrir Atom después del hecho y presionar 'deshacer', siempre y cuando hayas editado el archivo en Atom en algún momento. – henrebotha

1

git reset --hard no eliminará los archivos sin seguimiento. git clean lo hará, sin embargo.

Sin embargo, si git add los archivos, no se git commit ellos y luego ejecutar git reset --hard esos archivos se perderán.

Pero está bien, ya que se pueden recuperar, como se muestra en this answer. (Bueno, hasta el próximo git gc).

2

(Nota:.. Las medidas parecen haber cambiado un poco, ya que la respuesta aceptada fue publicada Pero la idea sigue siendo la misma)

Para añadir a la respuesta aceptada, pude recuperar mis archivos borrados usando WebStorm 2016.

  1. en primer lugar, he perdido mi archivo haciendo una limpieza usando git forzada git clean -f.
  2. Para recuperarla, entré WebStorm e hicieron los siguientes pasos:

    • Ir al proyecto pestaña para su proyecto, haga clic derecho para llegar a 'Mostrar historial' en 'Historia Local'. (As shown in this picture.)

    • Una vez que se hace clic en 'Mostrar historial', se puede ver la ventana emergente con 'Cambio externo -> Revertir' en ella. Haga clic para revertir los archivos deseados a la derecha.(As shown in the attached picture.)

    • Después de los 2 pasos anteriores, debería ver su archivo volver a la pestaña 'Proyecto'. La ventana emergente de "Historial local" mostrará algo parecido a esta imagen adjunta. Reverted to External Change Tendrás la opción de que se agregue a Git.

    • Para destrabarlo, simplemente haga un git reset HEAD <filename> desde la línea de comandos.

Cuestiones relacionadas