2013-01-23 12 views
14

Na moim komputerze lokalnym usunąłem pliki z folderu.Odzyskaj pliki gotowe, ale nie zatwierdzone po "git rm -rf"

git init 
git add --all 

wtedy napisałem (nie pytaj mnie, dlaczego! :))

git rm -rf 

nie popełnić jeszcze. Teraz mam puste foldery w moim projekcie. W folderze .git znajduje się objects z 53 Mb plików.

Jak mogę odzyskać moje pliki? Próbowałem już programów takich jak Drill Disc i Stellar, ale nie znalazłem moich plików. I nie mogę wycofać z GIT.

Jak mogę odzyskać utracone pliki?

+0

Jeśli ich nie odzyskasz za pomocą dowolnego narzędzia "cofnij", to już ich nie ma. – Sven

+2

http://stackoverflow.com/questions/5788037/recover-from-git-reset-hard/6780036#6780036 może to być przydatne – pktangyue

Odpowiedz

10

(aktualizacja) Zastosowanie git fsck zamiast, to jest wbudowane polecenie do pobierania plików po raz dodane do repozytorium git.

git fsck --lost-found --unreachable 

po przetworzeniu polecenia pobrane pliki zostaną umieszczone na .git/lost-found/other, z nazwą pliku hash SHA256. Mimo że pierwotna nazwa nadal jest tracona, zawartość zostanie zwrócona.


Możesz znaleźć swoje pliki w swoim katalogu .git/objects.

Załóżmy, że istnieje .git/objects/2f/ae996f8f8f9298b41ba4fdbac3d62014f9579e obiekt, można wykonać

git cat-file -p 2fae996 

aby uzyskać zawartość swojego utraconego pliku.

Ale przykro mi, nie mam pojęcia o rekonstrukcji katalogu lub wykonaniu tego automatycznie.

+0

+1: Wow, rzeczywiście. Dziwne, że pliki tam są, ale nie są dostępne w żaden sposób za pomocą normalnych poleceń git. –

+0

Nie martwię się o katalogi, ale potrzebuję plików. "git cat-file" - to jak polecenie "cat" w * nix? Jak zapisać plik w innym katalogu? – user2003024

+0

można go zapisać przez przekierowanie, tak jak zwykłe polecenie unix. 'git cat-file object>/path/to/where/you/want/save/it', ale myślę, że to nie jest dobry pomysł, ponieważ nie ma informacji o nazwach plików. – dyng

1

próbowałeś:

git reset --hard 

?

nadzieja, że ​​działa :)

+0

Po 'git rm -rf' możesz nawet bezpiecznie wykonać twardy reset. – Flavius

+1

-1: To działałoby tylko wtedy, gdyby użyłoby 'rm -rf'. Zobacz [moja odpowiedź] (http://stackoverflow.com/a/14475121/572644) dla wyjaśnienia. –

+1

To polecenie zmieniło kod na ostatnie zatwierdzenie i usun wszystkie zmodyfikowane pliki. –

Powiązane problemy