Git - usunąłem niektóre pliki lokalnie, jak mogę je pobrać ze zdalnego repozytorium

110

Usunąłem niektóre pliki na moim komputerze, jak mogę je ponownie pobrać?

Pull mówi: „Już aktualne”.

Dick Colt
źródło
1
Nie musisz ich „pobierać ponownie”, ponieważ cała historia repozytorium istnieje lokalnie, gdy używasz Git.
cdhowie
czy wiesz, jak je zdobyć z lokalnego?
Charlie Parker

Odpowiedzi:

164

Ponieważ git jest rozproszonym systemem VCS, Twoje lokalne repozytorium zawiera wszystkie informacje. Pobieranie nie jest konieczne; wystarczy wyodrębnić żądaną zawartość z repozytorium na wyciągnięcie ręki.

Jeśli nie zatwierdziłeś usunięcia, po prostu wyewidencjonuj pliki z bieżącego zatwierdzenia:

git checkout HEAD <path>

Jeśli zatwierdziłeś usunięcie, musisz wypisać pliki z zatwierdzenia, które je zawiera. Przypuszczalnie byłoby to poprzednie zatwierdzenie:

git checkout HEAD^ <path>

ale jeśli zostało nzatwierdzone wcześniej, użyj HEAD~nlub po prostu uruchom gitk, znajdź SHA1 odpowiedniego zatwierdzenia i wklej go.

Cascabel
źródło
2
jako komentarz boczny, działa to również dla pełnego katalogu, nie jest to specjalny ani specyficzny dla pojedynczego pliku (działał przynajmniej, gdy próbowałem). Thnx przy okazji.
Charlie Parker
5
NB <path>jest obowiązkowe, nawet jeśli tylko .kropka dla bieżącego reż. Ale „gałąź” ( HEADw powyższym przykładzie) jest opcjonalna. Podobnie jak w przypadku wielu poleceń Git, ani dane wyjściowe, ani pomoc nie są pomocne.
MarkHu
39

git checkout filename

git reset --hard też może załatwić sprawę

Šimon Tóth
źródło
9
ostrzeżenie jednak przy używaniu git reset --hardmetody, ponieważ spowoduje to powrót całego drzewa do lokalizacji, w której umieścisz HEAD / HEAD ^ / HEAD ~ n, a zrobi to bez uprzedzeń i potencjalnie straci wiele zatwierdzeń ...
g19fanatic
git checkout nazwa pliku była dla mnie odpowiedzią :)
Ruub
git checkout nazwa pliku tworzy tylko pusty plik
mrek
umieszczony w wybranym folderze i git checkount .działał jak urok!
hzitoun
21

Jeśli usunąłeś lokalnie wiele plików, ale nie zostały one zatwierdzone, możesz wymusić wypisanie

$ git checkout -f HEAD
Amit
źródło
Jak widać z wyjścia „Już aktualne”, osoba zadająca to pytanie w ostatnim czasie nic nie popełniła. Czy może powinieneś określić, że git checkout -f HEAD jest NIEBEZPIECZNY? Ponieważ może cofnąć lokalne zmiany, które nie zostały zatwierdzone (przywrócenie poprzednich plików jest wynikiem pozytywnym, utrata zmian w edytowanych plikach jest wynikiem negatywnym).
Lionel Trebuchon
15

Jeśli usunąłeś wiele plików lokalnie i nie zatwierdziłeś zmian, przejdź do ścieżki lokalnego repozytorium, otwórz powłokę git i wpisz.

$ git checkout HEAD .

Wszystkie usunięte pliki przed ostatnim zatwierdzeniem zostaną odzyskane.

Dodawanie „.” przywróci wszystkie usunięte pliki z bieżącego repozytorium do odpowiednich ścieżek.

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją .

rzskhr
źródło
2

Musisz wypisać poprzednią wersję sprzed usunięcia plików. Spróbuj git checkout HEAD^pobrać ostatnią wersję.

meagar
źródło
0

Dodam również, aby wykonać następujące kroki, aby repozytorium git było poprawnie połączone z IDE:

 $ git reset <commit #>

 $ git checkout <file/path>

Mam nadzieję, że to było pomocne!

Mona Wade
źródło