La seule chose qui a fonctionné pour moi était de récupérer le dépôt dans un autre dossier. Supposons que le dépôt actuel est dans /home/me/current
.
J'ai ensuite fait
git clone /home/me/current /home/me/temp
Cela fait un clone séparé du repo dans /home/me/temp
Je peux maintenant aller /home/me/temp
et faire ce que je veux. Par exemple
git reset --hard commit-hash-before-delete
Maintenant, je peux recopier le dossier du fichier supprimé
cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder
Et supprimez le dossier temporaire
rm -rf /home/me/temp
Les exemples de
git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*
NE FONCTIONNENT PAS
$ 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.
D'autres exemples comme
git reset --hard HEAD
sont destructeurs au-delà des fichiers supprimés. Toutes les autres modifications seront également perdues.
De même
git reset --hard some-commit
perdra tous les commits après some-commit
git status
vous donnera un indice sur la ou les commandes à exécuter