Можно ли открыть конкретную версию файла в Emacs с помощью Magit, не меняя текущую ветку?
Я переместил некоторые локальные изменения в ревизию, где измененные функции были заменены функциональностью в другом файле. Я хотел бы открыть старую ревизию моих изменений в отдельном буфере, чтобы я мог сравнить изменения рядом.
Моим хакерским решением было запустить git show <branch pre-rebase>:file > old_file
и открыть old_file
в Emacs.
git-timemachine
но так как мой код был перебазирован, я не думаю, что он будет работать, так как старый код не является частью истории текущей ветви?Ответы:
Вы можете просмотреть файл для определенной ревизии, используя M-x
magit-find-file
RET<filename>
RET.Или вы можете сначала просмотреть diff для фиксации, нажав RETна него, перейдя к файлу внутри diff, а затем RETснова нажав .
источник
M-x magit-log-buffer-file
переместите строку в нужный коммит, затемM-x magit-find-file
. Тогда значением по умолчанию будет этот коммит. Мне нужно указать путь к файлу, так как он не берется из буфера журнала.magit-find-file
себя из буфера для посещения файлов, а затем просто введитеRET
во втором приглашении (соответствующий файл предлагается по умолчанию).Это можно сделать с простым VC (встроенным в Emacs), без Magit. Введите
C-x v ~
и введите версию, которую вы хотите. Он понимает теги и хэши SHA1, а также обычные~1
суффиксы и т. Д.источник