Mam plik foo.txt
w oddziale A
i chcę wyewidencjonować foo.txt
z oddziału B
do indeksu. W linii poleceń zrobiłbym to:
$ git checkout B -- foo.txt
Chcę móc to zrobić w magit, przechodząc do dziennika, znajdując zatwierdzenie, które mnie interesuje (np. l o B
), Znajdując foo.txt
i uruchamiając jakieś polecenie, ale nie mogę wymyślić, jak to zrobić.
Odpowiedzi:
Od wersji 2.11.0 Magit jest to możliwe bezpośrednio z poziomu dyspozytora resetowania (
X f
możesz podać wersję i plik):Można to zrobić programowo w programie magit,
magit-file-checkout
który akceptuje specyfikację wersji i nazwę pliku (dzięki żądaniu funkcji @Emoses i implementacji @ Kyle Meyer). Poprzednio nazwa funkcjimagit-checkout-file
(od v2.3.0 - v2.9.0).źródło
magit-checkout-file
jest teraz przestarzały. Użyjmagit-file-checkout
zamiast tego.Nie znam wbudowanego sposobu, aby to zrobić.
Zakładając, że jesteś w gałęzi A, innym podejściem byłoby różnicowanie gałęzi B (
d r ..B
), a następnie przeniesienie punktu do interesującego cię pliku. Naciśnięciea
spowoduje zastosowanie tych zmian do drzewa roboczego (zamiast indeksu).Mam w mojej konfiguracji polecenie zresetowania lub pobrania pliku z wersji, ale w obecnym stanie nie pasuje dokładnie do tego, o co prosisz, ponieważ nie oferuje dobrej domyślnej wersji, gdy jest w wersji Magit tryb.
źródło