Usunąłem niektóre pliki.
NIE zobowiązałem się jeszcze.
Chcę zresetować mój obszar roboczy, aby odzyskać pliki.
Zrobiłem git checkout .
.
Ale usuniętych plików nadal brakuje.
I git status
pokazuje:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: cc.properties
# deleted: store/README
# deleted: store/cc.properties
#
Dlaczego nie git checkout .
resetuje się obszaru roboczego HEAD
?
git checkout .
działałoby dobrze.Odpowiedzi:
Dane wyjściowe podpowiadają, co należy zrobić.
git reset HEAD cc.properties
itp.Spowoduje to wycofanie operacji rm. Następnie ponowne uruchomienie
git status
powie ci, że musisz zrobić a,git checkout -- cc.properties
aby odzyskać plik.Aktualizacja: Mam to w swoim pliku konfiguracyjnym
którego zwykle używam do inscenizacji.
źródło
git reset HEAD \*
a następniegit checkout -- .
rm -r ./engines
- ups. Terazgit reset engines; git checkout engines
.Zainscenizowałeś usuwanie, więc musisz zrobić:
git checkout .
pobiera tylko z indeksu, w którym usunięcie zostało już ustawione.źródło
Po prostu zrób
git checkout path/to/file-I-want-to-bring-back.txt
źródło
error: pathspec 'file.ext' did not match any file(s) known to git.
git status
o tym mówi?git checkout HEAD -- file.ext
pomógł go przywrócić.Aby automatycznie odzyskać wszystkie nieetapowe usunięcia jednocześnie, bez określania poszczególnych ścieżek:
Aby automatycznie odzyskać wszystkie etapowe usunięcia jednocześnie, bez określania poszczególnych ścieżek:
źródło
git status --long | grep 'deleted:' | awk '{print $2}' | xargs git reset HEAD --
.git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --
zadziała.Ponieważ wykonujesz polecenie
git checkout .
, wygląda na to, że próbujesz przywrócić gałąź do ostatniego stanu zatwierdzenia.Możesz to osiągnąć za pomocą
git reset HEAD --hard
Ostrzeżenie
Może to spowodować usunięcie wszystkich najnowszych modyfikacji i wycofanie modyfikacji, np. Możesz stracić pracę. Może to być to, czego chcesz, ale sprawdź dokumenty, aby się upewnić.
źródło
jeśli użyłeś
następnie usunąć plik
nie działa, więc w takim przypadku
powinno działać
źródło
git checkout HEAD^ path/to/filename
pracował dla mnie, ponieważ nie popełniłem pliku.Oto polecenie, które pomogło mi na moim komputerze Mac. Wypróbowałem kilka innych rozwiązań, ale one nie działały dla mnie.
Wersja Git na OSX Mavericks
Komenda
źródło
źródło
Służy
git ls-files
do kasowania usuniętych (-d) lub zmodyfikowanych (-m) plików.zobacz Jak mogę przywrócić tylko zmodyfikowane pliki w kasie git?
źródło
git ls-files -d | xargs -I{} git checkout "{}"
.Jeśli chcesz przywrócić wszystkie pliki jednocześnie
Pamiętaj, aby użyć kropki, ponieważ każe git pobrać wszystkie pliki.
To polecenie zresetuje głowicę i cofnie wszystkie zmiany:
Następnie uruchom to, aby przywrócić wszystkie pliki:
Następnie robiąc status git, otrzymasz:
źródło
Czy chcesz to zobaczyć?
dotyczy to przypadków, w których korzystałeś
zanim coś popełnisz.
Możesz także pozbyć się utworzonych plików, które nie zostały jeszcze utworzone. I nie chcesz ich. Z :
źródło
git checkout -- .
nie pomaga odzyskać skasowane pliki i odpowiada co pytający próbowałem:git checkout .
. Część których praca może jest jeden, że nie kopiować:git checkout <file_path>
.Znalazłem ten post, szukając odpowiedzi, jak usunąć plik, który został usunięty z mojego katalogu roboczego po scaleniu z gałęzią innej osoby. Po fuzji nie dokonano jeszcze zatwierdzenia. Ponieważ trwało scalanie, nie mogłem po prostu dodać go ponownie, używając:
Musiałem zrobić kolejny krok oprócz resetowania, aby przywrócić plik:
źródło
Jeśli nie wprowadziłeś żadnych zmian, wszystko, co musisz zrobić, to ukryć te zmiany i powrócisz do ostatniego działającego zatwierdzenia.
źródło
jeśli szukasz skasowanego katalogu.
źródło
Oto różne przypadki jako odniesienie, aby pomóc innym:
Jeśli usunięcie nie zostało zatwierdzone, poniższe polecenie przywróci usunięty plik z drzewa roboczego.
Możesz uzyskać listę wszystkich usuniętych plików z drzewa roboczego, używając poniższego polecenia.
Jeśli usunięcie zostało zatwierdzone, znajdź zatwierdzenie w miejscu, w którym się ono wydarzyło, a następnie odzyskaj plik z tego zatwierdzenia.
Powinno dać ci coś w rodzaju
c46e81aa403ecb8a0f7a323a358068345
: Teraz użyj zatwierdzenia # tutajCoś w tym stylu: $ git Checkout c46e81aa403ecb8a0f7a323a358068345 -
Jeśli szukasz ścieżki pliku do odzyskania, poniższe polecenie wyświetli podsumowanie wszystkich usuniętych plików.
Jeśli chcesz tylko wyświetlić listę plików:
źródło
Dla mnie to, co zadziałało, było
git checkout {SHA1 of commit with version to restore} "{path to file to restore}"
Na przykład
git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"
(wykonywany w gałęzi, w której chcemy przejść do pliku)
Po wykonaniu tego polecenia przywrócony plik będzie istniał w oryginalnej lokalizacji (którą trzeba będzie zatwierdzić)
źródło
git checkout master path/to/the/file.bin
tak, aby po prostu cofnąć usunięcie tego pliku bez utraty innych dokonanych zmian. PS: to powinna być zaakceptowana odpowiedź ...Jeśli zainstalowałeś ToroiseGIT, po prostu wybierz pozycję menu „Przywróć ...” dla menu podręcznego folderu nadrzędnego.
źródło
1. Znajdź to konkretne zobowiązanie, do którego chcesz przywrócić, używając:
2. Odwołaj się do tego zatwierdzenia, używając:
Teraz Twój oddział lokalny będzie miał wszystkie pliki w szczególności
źródło
UWAGA: najpierw poproś o pracę, którą chcesz zachować.
Możesz zresetować swój obszar roboczy (i odzyskać usunięte pliki)
źródło
./*
../*
zostanie rozszerzony przez bash, aby dopasować te pliki przed wysłaniem do git.Miałem ten sam problem, jednak żadne z powyższych rozwiązań nie zadziałało. Skończyło się to na:
- utworzeniu pustego pliku o tej samej nazwie
- porównaniu tego pliku z jego lokalną historią
- skopiowaniu historii do pustego pliku.
źródło
Miałem ten sam problem i żadna z odpowiedzi, które tu wypróbowałem, również nie działała dla mnie. Korzystam z Intellij i sprawdziłem nowy oddział,
git checkout -b minimalExample
aby stworzyć „minimalny przykład” dla nowej gałęzi jakiegoś problemu, usuwając kilka plików i modyfikując kilka innych w projekcie. Niestety, mimo że nie dokonałem żadnych zmian w nowej gałęzi „minimalnego przykładu”, kiedy ponownie sprawdziłem moją „oryginalną” gałąź, wszystkie zmiany i usunięcia z gałęzi „minimalnego przykładu” miały miejsce w gałęzi „ też oryginalna gałąź (a przynajmniej tak się wydawało). Wedługgit status
usuniętych plików właśnie zniknęły z obu gałęzi.Na szczęście, mimo że Intellij ostrzegł mnie, że „usunięcie tych plików może nie być w pełni możliwe do odzyskania”, udało mi się je przywrócić (w minimalnej przykładowej gałęzi, z której zostały faktycznie usunięte), klikając projekt prawym przyciskiem myszy i wybierając Historia lokalna > Pokaż historię (a następnie Przywróć najnowszy element historii, który chciałem). Po przywróceniu plików przez Intellij w gałęzi „minimalnego przykładu” przesunąłem gałąź do źródła. Potem wróciłem do mojego „oryginalnego” oddziału lokalnego i pobiegłem,
git pull origin minimalExample
aby odzyskać je również w „oryginalnym” oddziale.źródło