2015-09-11 19 views

Odpowiedz

23

Jak można je znaleźć w the documentation of git stash, można mieć szczęście, jeśli to działa:

Odzyskiwanie stashes które zostały wyczyszczone/spadła błędnie

Jeśli przez pomyłkę spadnie lub wyraźne stashes, nie mogą odzyskać normalne mechanizmy bezpieczeństwa. Możesz jednak wypróbować następującą inkantację, aby uzyskać listę skrytek, które wciąż znajdują się w repozytorium, ale nie można ich już uzyskać:

git fsck --unreachable | grep commit | cut -d \ -f3 | xargs git log --merges --no-walk --grep = WIP

Jeśli znajdziesz zapas wyczyszczonych przez pomyłkę, to można zrobić:

git stash apply <stash> 

EDIT: Użyj to polecenie zamiast: git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk --grep=WIP

+0

To nie działa :( –

+2

@AshishBanker: To zniknęło, niech to będzie dla ciebie lekcja. Nie używaj 'git stash' do przechowywania zmian, które cię interesują, użyj' git commit', nawet jeśli jest częściowe.Możesz zawsze "git commit --amend" i "git rebase -i' później. –

+5

Na OSX:' '' git fsck --unreachable | grep commit | cut -d '' -f3 | xargs git log - scala --no-walk --grep = WIP''' –

0

Usunąłem również skrytkę, ale używając guita GitKraken, więc nie wiem dokładnie, co polecenie git wykonało. Wybrana odpowiedź nie zadziałała, ale przynajmniej postaw mnie na dobrej drodze.

W moim przypadku zadziałało ręczne przeszukiwanie - nieosiągalne obiekty. Jestem pewien, że jest bardziej efektywny sposób, ale cieszę się, że udało mi się odzyskać te zmiany.

ids=`git fsck --unreachable | grep blob | cut -d ' ' -f3` 
number_of_ids=`echo $ids | wc -l | tr -d '[:space:]'` 
for i in {1..$number_of_ids}; do git show `echo $ids | sed -n ${i}p` > evaluate$i.rb;done; 

W ten sposób zapisuje wszystkie nieosiągalne obiekty w plikach z prefiksem "oceń". Następnie otworzyłem wszystkie pliki w edytorze tekstów (podniosły dla mnie subl evaluate*) i oceniłem każdy plik po kolei, ręcznie kopiując i wklejając plik do starej wersji oryginalnego pliku, jeśli był to plik ze skrytki, którą usunąłem.

Porady:

  • Zmiany .rb dopasować rozszerzenie pliku z plików szukasz, aby uzyskać odpowiednie podświetlanie składni, jeśli chcesz.
  • Jeśli twoje pliki nie są dołączone, możesz rozszerzyć zakres wyszukiwania, usuwając | grep blob (plamy były tam, gdzie znalazłem moje pliki).