Mam stare zatwierdzenie, które zrobiłem kilka tygodni temu. Chcę przywrócić tylko jeden plik z tego zatwierdzenia. Co ja robię?
git
git-checkout
Varun Achar
źródło
źródło
Odpowiedzi:
Nie zmieni to HEAD, po prostu nadpisze lokalny plik
path/to/file.txt
Zobacz man git-rev-parse, aby zapoznać się z możliwymi specyfikacjami wersji (oczywiście prosty skrót (jak
dd9bacb
) dobrze się sprawdzi)Nie zapomnij zatwierdzić zmiany (po sprawdzeniu ...)
źródło
revision-specification
co OP poprosił :)shacommit~1
(np .:),git checkout 0f4bbdcd~1 -- path/to/file.txt
aby uzyskać zatwierdzenie bezpośrednio przed.git checkout [Revision_Key] -- path/to/file
.źródło
git checkout
radzi sobie z pojedynczymi plikami (patrz odpowiedź sehe), nie trzeba kopiować i wklejać.HEAD
,ORIG_HEAD
czy którykolwiek z tych, w połączeniu z^
/~
/@
-Style notacji.Musiałem przywrócić najnowszy plik zapisany w git. Aby więc powtórzyć i podać inną perspektywę, musisz to zrobić, wykonując następujące dwa kroki:
git log -3
Pokazuje trzy ostatnie zatwierdzenia. Przeczytaj komentarze i nazwisko autora, aby zawęzić zakres konkretnej wersji. Zapisz długi identyfikator zatwierdzenia (tj. B6b94f2c19c456336d60b9409fb1e373036d3d71) dla żądanej wersji zatwierdzenia.
git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71 - mój_plik.java
Przekaż identyfikator zatwierdzenia ORAZ nazwę pliku, który chcesz przywrócić. Upewnij się, że masz spację przed i po podwójnym łączniku.
Można to zrobić na wiele innych sposobów. Ale ten jest najprostszy, jaki pamiętam. Mam nadzieję, że to pomaga.
UWAGA: Jeśli znajdujesz się w ścieżce / folderze projektu, nie jest konieczne wpisywanie pełnej ścieżki pliku w poleceniu pobierania.
źródło
Wszystkie odpowiedzi wspominają
git checkout <tree-ish> -- <pathspec>
. Od wersji git 2.23.0 wprowadzono nową metodę przywracania git , która powinnagit checkout
obejmować część tego, za co była odpowiedzialna. Zobacz najważniejsze zmiany na blogu github .Domyślne zachowanie tego polecenia polega na przywróceniu stanu drzewa roboczego z zawartością pochodzącą z
source
parametru (który w twoim przypadku będzie skrótem zatwierdzenia).Zakładając, że skrótem zatwierdzenia jest
abcdef
polecenie, wyglądałoby to tak:co (domyślnie) umieszcza je w działającym drzewie. Jeśli chcesz umieścić zmianę bezpośrednio w indeksie, aby można było ją od razu zatwierdzić:
lub z krótkimi nazwami opcji:
źródło