如何使用Magit打开文件的特定版本?


43

是否可以使用Magit在Emacs中打开文件的特定版本,而无需更改当前分支?

我已经将一些本地更改重新建立到修订版本上,在该修订版本中,已修改的功能已替换为其他文件中的功能。我想在单独的缓冲区中打开更改的旧版本,以便可以并排比较更改。

我当前的hacky解决方案是先运行git show <branch pre-rebase>:file > old_file然后old_file在Emacs中打开。


1
github.com/pidu/git-timemachine可以暂时查看每个版本之间的文件。
kuanyui 2015年

1
我使用@kuanyui,git-timemachine但是由于我的代码已经重新设置了基础,所以我认为它不起作用,因为旧代码不属于当前分支的历史?
大卫·霍尔姆

Answers:


56

您可以使用来查看特定版本的文件M-x magit-find-file RET <filename> RET

或者,您可以先按RETdiff,然后在diff中导航到该文件,然后再按RET一次,以查看要提交的差异。


8
这对我有用;这是我的工作:从文件的当前版本开始M-x magit-log-buffer-file,将行移至所需的提交,然后单击M-x magit-find-file。然后默认值为该提交。我确实必须提供文件的路径,因为这不是从日志缓冲区中提取的。
利亚姆

@tarsius,有点像magit-find-file,但是我只需要为当前缓冲区的文件选择修订版。它已经存在了吗?
ergosys

是的,请magit-find-file从文件访问缓冲区中使用自身,然后RET在第二个提示符下键入(默认提供正确的文件)。
tarsius

感谢您提供的信息以及您在Magit上所做的所有工作。破解一个跳过讨厌的额外按键的功能并不是很困难,所以我很高兴直到下一次发痒为止。
ergosys '18

29

如果没有Magit,可以使用普通的VC(Emacs内置的)进行处理。键入C-x v ~并键入所需的版本。它了解标记和SHA1散列以及常用的~1后缀。


这不是一个大问题的答案。您是否会发布Ruby问题的C答案?
布莱恩·阿什

4
@BryanAsh是的,如果C中的解决方案容易得多。
Markus Strauss
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.