recuperar eliminado archivo git git-checkout

eliminado - Restaurar una carpeta eliminada en un repositorio Git



git recuperar head (6)

He eliminado todos los contenidos dentro de una carpeta y la carpeta está vacía. Todavía tenía una copia en mi repo remoto. Pero cuando hice un git pull , no devolví los archivos eliminados, ¿no se supone que haga eso?

Así que investigué un poco y vi que puedes revertir un archivo haciendo git checkout <revision> -- <name of file>

Pero eso solo funciona en archivos.

¿Cómo puedo recuperar todos los archivos dentro del directorio?


Lo único que funcionó para mí fue sacar el repositorio en otra carpeta. Supongamos que el repositorio actual está en /home/me/current .

Entonces hice

git clone /home/me/current /home/me/temp

Esto hace un clon separado del repositorio en /home/me/temp

Ahora puedo ir a /home/me/temp y hacer lo que quiera. Por ejemplo

git reset --hard commit-hash-before-delete

Ahora puedo copiar la carpeta del archivo borrado de nuevo

cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder

Y borra la carpeta temporal.

rm -rf /home/me/temp

Los ejemplos de

git checkout -- some/deleted/folder git checkout -- some/deleted/folder/*

NO FUNCIONAN

$ git checkout -- some/deleted/folder/* zsh: no matches found: some/deleted/folder/* $ git checkout -- some/deleted/folder error: pathspec ''some/deleted/folder'' did not match any file(s) known to git.

Otros ejemplos como

git reset --hard HEAD

Son destructivos más allá de los archivos borrados. Cualquier otro cambio también se perderá.

similar

git reset --hard some-commit

perderá cualquier confirmación después de some-commit


Para eliminaciones no confirmadas, es tan simple como esto:

git reset HEAD rel / ruta / a / eliminado / directorio / *


Rt Haga clic en el proyecto -> Equipo -> Restablecer

En el tipo de reinicio, seleccione Reinicio completo. Esto replicará su repositorio remoto en su área de trabajo.


Si aún no ha confirmado sus cambios, puede revertir el contenido o un directorio:

git checkout -- removed_directory

Si quieres revertir todos los cambios haz:

git reset --hard HEAD


Si no especifica un archivo específico, debería poder extraer todo el contenido de un compromiso específico. Como: git checkout 264794319e9695ba843cd6 (asumiendo que el hash tiene todos sus archivos en el estado correcto).

La razón por la que pull no está restaurando archivos es que Git ve tus eliminaciones como el cambio más reciente, aplicando eso sobre cualquier cosa que estés extrayendo.

(Recomiendo experimentar en una nueva rama).


Todo lo que puedes hacer con un archivo, también puedes hacerlo con una carpeta.

También tenga en cuenta Buscar y restaurar un archivo eliminado en un repositorio Git

Los archivos se eliminan del árbol de trabajo pero aún no se han confirmado:

Si aún no ha indexado ( git add ) sus cambios, puede revertir el contenido de un directorio:

git checkout -- path/to/folder

Si la eliminación ya está indexada, debe restablecer eso primero:

git reset -- path/to/folder git checkout -- path/to/folder

Restaure el árbol de trabajo completo (no una sola carpeta), pero pierda todos los cambios no confirmados

git reset --hard HEAD

Cuando los archivos se eliminan en algún compromiso en el pasado:

Encuentra la última confirmación que afectó la ruta dada. Como el archivo no está en la confirmación HEAD, esta confirmación debe haberla eliminado.

git rev-list -n 1 HEAD -- <file_path>

Luego verifique la versión en la confirmación anterior, usando el símbolo caret ( ^ ):

git checkout <deleting_commit>^ -- <file_path>

Restaurar el árbol de trabajo completo desde un compromiso distante

git reset --hard <revision>