Das einzige, was für mich funktioniert hat, war das Auschecken des Repos in einem anderen Ordner. Angenommen, das aktuelle Repo ist in /home/me/current
.
Ich habe es dann getan
git clone /home/me/current /home/me/temp
Dadurch wird ein separater Klon des Repos erstellt /home/me/temp
Ich kann jetzt gehen /home/me/temp
und tun, was ich will. Beispielsweise
git reset --hard commit-hash-before-delete
Jetzt kann ich den gelöschten Dateiordner zurück kopieren
cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder
Und löschen Sie den temporären Ordner
rm -rf /home/me/temp
Die Beispiele von
git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*
ARBEITE NICHT
$ 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.
Andere Beispiele wie
git reset --hard HEAD
sind über die gelöschten Dateien hinaus destruktiv. Alle anderen Änderungen gehen ebenfalls verloren.
Ähnlich
git reset --hard some-commit
wird alle Commits nach verlieren some-commit
git status
gibt Ihnen einen Hinweis darauf, welche Befehle ausgeführt werden sollen