Wykonuję git skrytkę zapisując "ABC" i przez pomyłkę zrobiłem gash ukrywkę. Jak mogę odzyskać dane znajdujące się w skrytce ABC. Pomóc proszęJak cofnąć wyczyść git
Odpowiedz
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
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).
- 1. Jak cofnąć squash git merge?
- 2. Jak cofnąć aktualizację git-index?
- 3. git cofnąć usunięte pliki
- 4. Git cofnąć lokalny oddział usunąć
- 5. Jak cofnąć git init w katalogu domowym?
- 6. Jak cofnąć "git add." podczas scalania?
- 7. Jak cofnąć ostatnie zatwierdzenie w git
- 8. Wyczyść repozytorium git na Bitbucket?
- 9. Jak cofnąć zatwierdzenie
- 10. Git cofnąć częściowe zmiany w pliku
- 11. Git-Flow cofnąć ukończoną gałąź funkcji
- 12. Jak cofnąć "Rozwiązania" w TortoiseGit?
- 13. jak cofnąć wszystkie zmiany białych znaków za pomocą git
- 14. Jak mogę "cofnąć" scalenie gałęzi funkcjonalności w Git?
- 15. Jak szybko cofnąć zmiany etapowe i niezarządzane w git?
- 16. Jak cofnąć ditmę git rm -rf bez pierwszego zatwierdzenia?
- 17. Jak mogę cofnąć moje ostatnie dodanie/zatwierdzenie git?
- 18. Git: Wyciągnął zły oddział, a następnie pchnął scalenie. Jak cofnąć?
- 19. Jak cofnąć usunięcie gałęzi na githubie?
- 20. Jak cofnąć usunięcie svn
- 21. Jak cofnąć hg init?
- 22. Jak cofnąć "kopię svn"
- 23. jak cofnąć zapytanie mysql?
- 24. Jak cofnąć aktualizację RequestFactory
- 25. Jak cofnąć deklarację `declaration`?
- 26. Jak cofnąć "hg qnew"?
- 27. Czy jest polecenie, aby cofnąć proces init Git?
- 28. cofnąć błędem popełnianym podczas zgniecenia przez rewizje w GIT
- 29. Jak mogę "cofnąć" klon - pojedynczej gałęzi?
- 30. Jak odwrócić cofnąć zatwierdzenie za pomocą SHA
To nie działa :( –
@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. –
Na OSX:' '' git fsck --unreachable | grep commit | cut -d '' -f3 | xargs git log - scala --no-walk --grep = WIP''' –