2013-08-09 2 views
13

Я понял, что могу показать старые версии файла, используя «git log filename», чтобы показать коммиты, а затем использовать «git show commit-id: filename» для старой версии. Но это просто снижает его.git показать старую версию файла в редакторе

Я хотел был бы иметь возможность просмотреть это в emacs, поэтому я могу перемещаться, как я привык, и чтобы подсветка синтаксиса. Я узнал, что я не могу установить git core.pager в emacs, поскольку emacs не может читать из stdin.

Кто-нибудь знает, как я мог это сделать? Или у вас есть еще один хороший способ проверить старые версии файлов?

+2

I * у * есть лучший способ проверки старых ревизий: с Vim: р , Простой 'git show commit-id: filename | vim'', и все готово! – amaurymartiny

+0

Вы также можете попробовать 'most' в качестве пейджера, у него есть поддержка цвета. – Mali

+0

Лучшие ответы доступны по адресу http://stackoverflow.com/questions/25420282/using-emacs-and-magit-to-visit-a-file-in-given-commit-branch-etc - в частности, 'Cx v ~ 'отлично подходит для переключения ветвей. – Ibrahim

ответ

18

Просто используйте > и поместите его в файл, который вы можете открыть в emacs.

git show commit-id:filename > oldfile 

Затем откройте файл в emacs.

4

Если вы используете bash, вы можете использовать Process Substitution.

gvim <(git show commit-id:filename) 
+0

Когда emacs открывается, он говорит «символическая ссылка на несуществующий файл» в минибуфере и отображается пустой буфер – kodu

+0

Я не тестировал 'emacs <(git show commit-id: filename)', я пользователь vim ... И эта команда не работает с emacs: когда emacs открывает временный файл, созданный командой '<()', файл больше не существует ... – Nimlar

Смежные вопросы