He eliminado todo el contenido dentro de una carpeta y la carpeta está vacía. Todavía tenía una copia en mi repositorio remoto. Pero cuando lo hice git pull
, no se devolvieron los archivos eliminados, ¿no se supone que debe hacerlo?
Así que investigué un poco y vi que se puede revertir un archivo haciendo
git checkout <revision> -- <name of file>
Pero eso solo funciona con archivos.
¿Cómo puedo recuperar todos los archivos dentro del directorio?
git
git-checkout
json2021
fuente
fuente
git status
le dará una pista sobre qué comando (s) ejecutarRespuestas:
Todo lo que puede hacer con un archivo, también lo puede hacer con una carpeta.
También tenga en cuenta Buscar y restaurar un archivo eliminado en un repositorio de 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:Si la eliminación ya está indexada, primero debes restablecerla:
Restaurar el árbol de trabajo completo (no una sola carpeta), pero perder todos los cambios no confirmados
Cuando los archivos se eliminan en alguna confirmación en el pasado:
Encuentra la última confirmación que afectó a la ruta dada. Como el archivo no está en la confirmación HEAD, esta confirmación debe haberlo eliminado.
Luego, verifique la versión en la confirmación anterior, usando el
^
símbolo de intercalación ( ):Restaurar el árbol de trabajo completo desde un compromiso distante
fuente
git checkout -- path/to/folder/*
no funciona Nota: la pregunta es cómo restaurar una carpeta, no un archivoHow can I retrieve all the files inside the directory
significa tanto el directorio como sus archivos. Pero el comando sorprendentemente no funciona para mí también. Recuerdo que lo hizo hace un año.git checkout -- path
ogit checkout -- 'path/*'
. En su ejemplo, elimina con logit rm
que el OP no parecía hacer. Agregué instrucciones para tal caso. ¡Gracias!git checkout "<deleting_commit>^" -- <file_path>
Si aún no ha confirmado sus cambios, puede revertir el contenido o un directorio:
Si desea revertir todos los cambios, haga lo siguiente:
fuente
git checkout -- removed_directory
no funcionagit checkout -- removed_directory
funcionó para mí, pero he creado este directorio antes (porcheckout
uno de los archivos en ese directorio). Después de la creación, todos los archivos se restauraron en la carpeta con este comando.Puede restaurar archivos o carpetas con git restore.
Aquí, master ~ 1 revierte su carpeta a la revisión "1" desde su rama master.
Fuente: https://git-scm.com/docs/git-restore
fuente
Lo único que funcionó para mí fue verificar el repositorio en otra carpeta. Suponga que el repositorio actual está en
/home/me/current
.Entonces hice
Esto crea un clon separado del repositorio en
/home/me/temp
Ahora puedo ir
/home/me/temp
y hacer lo que quiera. Por ejemploAhora puedo volver a copiar la carpeta de archivos eliminada
Y borra la carpeta temporal
Los ejemplos de
NO FUNCIONAN
Otros ejemplos como
son destructivos más allá de los archivos eliminados. Cualquier otro cambio también se perderá.
similar
perderá cualquier compromiso después
some-commit
fuente
A partir de git 2.24.0, hay un nuevo comando git experimental: git restore
fuente
Si no especifica un archivo específico, debería poder extraer el contenido completo de una confirmación específica. Como:
git checkout 264794319e9695ba843cd6
(asumiendo que el hash tiene todos sus archivos en el estado correcto).La razón
pull
no es restaurar archivos es que git ve tus eliminaciones como el cambio más reciente, aplicándolo además de lo que estés extrayendo.(Recomendaría experimentar en una nueva rama).
fuente
Si solo está buscando recuperar una carpeta eliminada y tiene otras confirmaciones después de la eliminación, también puede ir a su proyecto en github.com.
Desde github.com, vaya a su última confirmación que tiene su carpeta. Debería ver el mensaje de confirmación y a la derecha hay un botón con la etiqueta "Examinar archivos". Al hacer clic aquí, accederá a todos los archivos de esa etapa de la confirmación.
Desde allí, puede clonar el código o simplemente descargar el código como un zip.
fuente
para eliminaciones no comprometidas, es tan simple como esto:
git reset HEAD rel / ruta / a / eliminado / directorio / *
fuente