Usunąłem całą zawartość folderu, a folder jest pusty. Wciąż miałem kopię w moim zdalnym repozytorium. Ale kiedy zrobiłem, git pull
to nie odłożyłem usuniętych plików, czy nie ma tego zrobić?
Zrobiłem więc trochę badań i zobaczyłem, że możesz przywrócić plik, wykonując
git checkout <revision> -- <name of file>
Ale to działa tylko w przypadku plików.
Jak mogę odzyskać wszystkie pliki w katalogu?
git
git-checkout
json2021
źródło
źródło
git status
podpowie, jakie polecenie (a) uruchomićOdpowiedzi:
Wszystko, co możesz zrobić z plikiem, możesz też zrobić z folderem.
Uwaga: Znajdź i przywróć usunięty plik w repozytorium Git
Pliki są usuwane z drzewa roboczego, ale nie zostały jeszcze zatwierdzone:
Jeśli jeszcze nie zindeksowałeś (
git add
) swoich zmian, możesz cofnąć zawartość katalogu:Jeśli usunięcie jest już zindeksowane, najpierw zresetuj to:
Przywróć pełne drzewo robocze (nie pojedynczy folder), ale utracisz wszystkie niezatwierdzone zmiany
Kiedy pliki są usuwane w niektórych zatwierdzeniach w przeszłości:
Znajdź ostatnie zatwierdzenie, które wpłynęło na podaną ścieżkę. Ponieważ pliku nie ma w zatwierdzeniu HEAD, to zatwierdzenie musiało go usunąć.
Następnie sprawdź wersję przed zatwierdzeniem, używając
^
symbolu karetki ( ):Przywróć pełne drzewo robocze z odległego zatwierdzenia
źródło
git checkout -- path/to/folder/*
nie działa Uwaga: pytanie brzmi, jak przywrócić folder, a nie plikHow can I retrieve all the files inside the directory
oznacza zarówno katalog, jak i jego pliki. Ale polecenie, co zaskakujące, też nie działa dla mnie. Pamiętam, że zrobiłem to rok temu.git checkout -- path
lubgit checkout -- 'path/*'
. W twoim przykładzie usuwasz, zgit rm
którym OP nie wydawał się działać. Dodałem instrukcje dla takiego przypadku. Dzięki!git checkout "<deleting_commit>^" -- <file_path>
Jeśli jeszcze nie zatwierdziłeś zmian, możesz przywrócić zawartość lub katalog:
Jeśli chcesz cofnąć wszystkie zmiany, wykonaj:
źródło
git checkout -- removed_directory
nie działagit checkout -- removed_directory
pracował dla mnie, ale utworzyłem ten katalog wcześniej (przezcheckout
jeden z plików w tym katalogu). Po utworzeniu wszystkie pliki zostały przywrócone w folderze za pomocą tego polecenia.Możesz przywrócić pliki lub folder za pomocą git restore.
Tutaj, mistrzu ~ 1 przywraca folder do wersji „1” z powrotem z gałęzi master.
Źródło: https://git-scm.com/docs/git-restore
źródło
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
To tworzy osobny klon repozytorium w
/home/me/temp
Teraz mogę iść
/home/me/temp
i robić, co chcę. Na przykładTeraz mogę z powrotem skopiować usunięty folder plików
I usuń folder tymczasowy
Przykłady
NIE DZIAŁA
Inne przykłady, takie jak
są destrukcyjne poza tylko usuniętymi plikami. Wszelkie inne zmiany również zostaną utracone.
podobnie
straci wszystkie zatwierdzenia po
some-commit
źródło
Począwszy od git 2.24.0, jest nowe eksperymentalne polecenie git : git restore
źródło
Jeśli nie określisz konkretnego pliku, powinieneś być w stanie pobrać pełną zawartość określonego zatwierdzenia. Na przykład:
git checkout 264794319e9695ba843cd6
(zakładając, że hash ma wszystkie twoje pliki we właściwym stanie).Powodem
pull
nie jest przywracanie plików, ponieważ git postrzega twoje usunięcia jako nowszą zmianę, stosując ją do wszystkiego, co pobierasz.(Polecam eksperymentowanie w nowej gałęzi).
źródło
Jeśli chcesz tylko odzyskać usunięty folder i po usunięciu masz inne zatwierdzenia, możesz również po prostu przejść do swojego projektu na github.com.
Z github.com przejdź do ostatniego zatwierdzenia, w którym znajduje się twój folder. Powinieneś zobaczyć komunikat o zatwierdzeniu, a po prawej stronie znajduje się przycisk oznaczony „Przeglądaj pliki”. Kliknięcie tego przeniesie Cię do wszystkich plików z tego etapu zatwierdzenia.
Stamtąd możesz sklonować kod lub po prostu pobrać kod jako plik ZIP.
źródło
w przypadku niezamierzonych usunięć jest tak proste, jak to:
git reset HEAD rel / ścieżka / do / usunięty / katalog / *
źródło