Единственное, что у меня сработало, - это проверить репо в другой папке. Предположим, что текущее репо находится в /home/me/current
.
Я тогда сделал
git clone /home/me/current /home/me/temp
Это делает отдельный клон репо в /home/me/temp
Теперь я могу пойти /home/me/temp
и делать все, что хочу. Например
git reset --hard commit-hash-before-delete
Теперь я могу скопировать удаленную папку с файлами обратно
cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder
И удалите временную папку
rm -rf /home/me/temp
Примеры
git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*
НЕ РАБОТАЕТ
$ 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.
Другие примеры, такие как
git reset --hard HEAD
деструктивны не только для удаленных файлов. Любые другие изменения также будут потеряны.
по аналогии
git reset --hard some-commit
потеряет любые коммиты после some-commit
git status
подскажет, какие команды нужно запускать