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
git clone /home/me/current /home/me/temp
Esto crea un clon separado del repositorio en /home/me/temp
Ahora puedo ir /home/me/temp
y hacer lo que quiera. Por ejemplo
git reset --hard commit-hash-before-delete
Ahora puedo volver a copiar la carpeta de archivos eliminada
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 eliminados. Cualquier otro cambio también se perderá.
similar
git reset --hard some-commit
perderá cualquier compromiso después some-commit
git status
le dará una pista sobre qué comando (s) ejecutar