Estaba siguiendo las instrucciones para crear páginas de github y olvidé bajar a mi subdirectorio git. Como resultado, acabo de crear un directorio completo de documentos con git clean -fdx
.
¿Hay alguna forma de que pueda deshacer este terrible error?
119
git clean -fdx
sin previo aviso que la operación es muy peligrosa. Me pregunto cuántas personas destruyeron irrevocablemente sus archivos con esta sugerencia aparentemente inocente.git clean
llamadas inadvertidas . Además, trate de dejar el hábito de limpiar sin revisar. Cree un script de Powershell o Bash al que se pueda llamar y que se ejecutegit clean -fdxn
con un mensaje de confirmación antes de ejecutar la limpieza increíblemente destructiva.Respuestas:
No. Esos archivos se han ido.
(Solo se verificó en Linux: git clean calls
unlink()
, y no hace una copia de seguridad de nada de antemano).fuente
git clean
había eliminado accidentalmente los cambios archivados dentro de la.idea
carpeta oculta y ¡el historial local me salvó!Hará un ensayo y le mostrará qué archivos se eliminarían si ejecutara
(por supuesto, esto solo es útil si lo sabe con anticipación, pero para la próxima vez)
fuente
-n
funciona en la mayoría de los comandos git (y muchos otros comandos * nix).IntelliJ / Android Studio permite restaurar archivos del historial local .
fuente
No. "git clean -fdx" eliminará todos los archivos y directorios que git no rastrea desde su directorio de trabajo. Debido a que Git no rastrea estos archivos, no tendrá copias de seguridad de estos archivos. Al menos no habitualmente.
Si ha realizado un 'git add' en uno de estos archivos hace relativamente poco tiempo (pero canceló la confirmación), existe la posibilidad de que pueda encontrarlo con 'git fsck --lost-found'. Vale la pena intentarlo, pero no te hagas ilusiones demasiado.
En el futuro, debería considerar comprometerse varias veces con demasiada frecuencia que pocas veces. De esa manera, al menos tendrá una copia de seguridad local, incluso si no termina enviando estas confirmaciones a un control remoto.
fuente
mkdir
leerloComo @kusma mencionó anteriormente, si tiene suerte (si alguna vez hizo "git add"), puede usar lo siguiente para extraer todo el objeto:
De esa manera, buscará todos los tipos de fragmentos, recopilará las diferencias completas y las agregará a un archivo que puede extraer el archivo perdido. En mi caso, había perdido toda una clase de Java.
fuente
Si está utilizando cualquier IDE de Jetbrains, hay una opción para ver el historial local de un archivo. En caso de que lo hayas hecho
git clean
, puede volver a crear el archivo y verificar el historial local del archivo y restaurarlo desde allí.Me funcionó para un solo archivo. Para un directorio completo, no tengo idea de cómo hacerlo.
fuente
Hoy tuve este problema.
Como han dicho otros, git no guarda los archivos.
La única forma de deshacer esto es con una utilidad de recuperación. Usé "extundelete" y recuperé todo, pero su millaje / sistema de archivos puede variar.
fuente
Si está trabajando en Eclipse, una de las posibles soluciones es restaurar desde el historial local de Eclipse.
fuente
¡De hecho, sí ! ¡Esto es posible! Pero sin usar comandos de git.
Todo lo que necesitamos es solo una herramienta de recuperación de archivos como Recuva .
Simplemente mencione la ruta desde donde se eliminó y deje que recupere los archivos.
También aquí hay algunas notas útiles para usar esa aplicación:
Advanced Mode
->Options
->Actions
->Restore folder structure
Con esto, todos sus archivos se recuperarán manteniendo la estructura de la carpeta, por lo que será mucho más fácil para simplemente arrastrar y soltar esa carpeta en la ruta desde donde fue eliminada.
¡Advertencia!Tan pronto como pierda (elimine accidentalmente) algún archivo, intente no tocar (agregar / editar archivos) la unidad de donde se eliminó para aumentar la posibilidad de una recuperación exitosa. De lo contrario, podría perder completamente ese archivo.
Por qué funciona: cuando elimina un archivo, en realidad no se elimina. Simplemente está marcado como "eliminado", por lo que la próxima vez que agregue / actualice archivos en la misma unidad, esos archivos antiguos se sobrescribirán con los nuevos. Pero hasta que se sobrescriban, aún es posible leer (y, por supuesto, recuperar) los archivos.
fuente
Lo hice con un código que se suponía que debía agregar a mi repositorio y limpié con -dfx que pude restaurar los archivos.
Traté de usar debugfs, buscar y vincular desde inodos, testdisk y muchas otras herramientas que aparecen y ninguna ha encontrado el directorio que esta estúpida escritura borró por accidente.
Descarga extundelete desde sourceforge.
Probablemente necesite instalar el paquete e2fslibs-dev
Run
Generará el binario para extundelete dentro de la carpeta src. En mi caso, borré una carpeta por error. vamos a llamarlo FOOBAR
Acabo de correr:
y creó una carpeta llamada RESTORED_FOLDERS
fuente
Si está utilizando git con MSBuild, creé un destino que copia todos los archivos y luego lo hace
git clean -xdf
. De esta manera, puede restaurar fácilmente el archivo si se da cuenta de que eliminó algo que no deseaba eliminar. Eche un vistazo aquí: http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/fuente
Si está usando una mac y tiene una copia de seguridad con un
Time Machine
, entonces puede restaurarfuente
Afortunadamente, cometí este error mientras usaba Windows 7. Fui a la papelera de reciclaje, resalté todos los archivos eliminados y hice clic en "Restaurar". Hecho.
fuente
git clean
no mueve archivos a la papelera de reciclaje.Si no ha introducido sus cambios (git push), también puede recuperar la información de su servidor que aún no está actualizada. Usé filezilla para recuperar los archivos que eliminé y los copié en mis archivos locales. No es la mejor manera de hacerlo, pero funciona y evita usar la consola
fuente