Jedyną rzeczą, która działała dla mnie, było pobranie repozytorium w innym folderze. Załóżmy, że bieżące repozytorium jest dostępne /home/me/current
.
Wtedy zrobiłem
git clone /home/me/current /home/me/temp
To tworzy osobny klon repozytorium w /home/me/temp
Teraz mogę iść /home/me/temp
i robić, co chcę. Na przykład
git reset --hard commit-hash-before-delete
Teraz mogę z powrotem skopiować usunięty folder plików
cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder
I usuń folder tymczasowy
rm -rf /home/me/temp
Przykłady
git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*
NIE DZIAŁA
$ 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.
Inne przykłady, takie jak
git reset --hard HEAD
są destrukcyjne poza tylko usuniętymi plikami. Wszelkie inne zmiany również zostaną utracone.
podobnie
git reset --hard some-commit
straci wszystkie zatwierdzenia po some-commit
git status
podpowie, jakie polecenie (a) uruchomić