Jak mogę otworzyć konkretną wersję pliku za pomocą Magit?


43

Czy można otworzyć konkretną wersję pliku w Emacsie za pomocą Magit bez zmiany bieżącej gałęzi?

Wprowadziłem zmiany lokalne do wersji, w której zmodyfikowane funkcje zostały zastąpione funkcjami w innym pliku. Chciałbym otworzyć starą wersję moich zmian w osobnym buforze, aby móc porównać zmiany obok siebie.

Moje obecne hacky rozwiązanie to uruchomić, git show <branch pre-rebase>:file > old_filea następnie otworzyć old_filew Emacs.


1
github.com/pidu/git-timemachine może tymczasowo wyświetlić plik między poszczególnymi wersjami.
— kuanyui

1
@kuanyui używam, git-timemachineale ponieważ mój kod został ponownie wyrenderowany, nie sądzę, aby działał, ponieważ stary kod nie jest częścią historii bieżącego oddziału?
— David Holm

Odpowiedzi:


56

Możesz wyświetlić plik dla określonej wersji za pomocą M-x magit-find-file RET <filename> RET.

Lub możesz najpierw wyświetlić różnicę do zatwierdzenia, naciskając RETją, przechodząc do pliku wewnątrz różnicy, a następnie naciskając RETponownie.


8
To działa dla mnie; oto co robię: z bieżącej wersji pliku M-x magit-log-buffer-fileprzenieś linię do żądanego zatwierdzenia M-x magit-find-file. Wtedy wartością domyślną będzie zatwierdzenie. Muszę podać ścieżkę do pliku, ponieważ nie jest on pobierany z bufora dziennika.
— Liam,

@tarsius, Trochę jak magit-find-file, ale gdzie muszę tylko wybrać wersję dla pliku bieżącego bufora. Czy już istnieje?
— ergosys,

Tak, użyj magit-find-filesię z bufora do przeglądania plików, a następnie po prostu wpisz RETw drugim monicie (odpowiedni plik jest oferowany jako domyślny).
— Tarsius

Dziękujemy za informacje i całą pracę nad Magit. Nie było zbyt trudno zhakować funkcję, która pomija ten irytujący dodatkowy klawisz, więc cieszę się, aż pojawi się kolejny świąd.
— ergosys

29

Można to zrobić za pomocą zwykłego VC (wbudowanego w Emacsa), bez Magita. Wpisz C-x v ~i wpisz żądaną wersję. Rozumie tagi i skróty SHA1, a także zwykłe ~1sufiksy itp.


To nie jest odpowiedź na magiczne pytanie. Czy opublikowałbyś odpowiedź C na pytanie Ruby?
— Bryan Ash

4
@BryanAsh tak, jeśli rozwiązanie w C jest o wiele łatwiejsze.
— Markus Strauss
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.