在Emacs中使用git blame命令获取提交细节

67

从emacs中,我如何查看最后更改光标所在行的提交的详细信息(例如提交消息)?

我已经安装了magit。

2个回答

108

针对这个特定操作,不一定需要使用magit - vanilla emacs可以完成。

(同样,由于此操作使用vc,因此在vc支持的任何版本控制系统中都应该能够完全使用。)

首先,使用vc-annotate命令,该命令绑定到键序列C-x v g

现在,光标应该位于您感兴趣的提交ID处。(如果没有,您可能需要使用C-x 1和/或v,以便查看哪行是哪行,以便导航到正确的行。) 现在,您可以使用=来查看该文件的差异。如果您收到以“无法从之前的任何修订版本进行比较”的错误开头的错误消息,则可能意味着此修订版本创建了该文件(这可能是emacs中的一个错误)。

Annotate缓冲区中已经显示了作者和日期。

要查看提交消息,请在Annotate缓冲区中按下l(字母l,而不是数字1)。要查看该修订版本时文件的内容,请在Annotate缓冲区或vc-change-log缓冲区中按下f


13
“a”是金钱行为 -- 在这种变化之前展示谴责。这样能节省我很多时间。 - event_jr
2
我非常喜欢这个模式!我不需要在终端和emacs之间来回切换。如果可以的话,我会给它加上100分! - Indradhanush Gupta
5
对我来说,“vc-annotate”的输出比“magit-blame-mode”更有意义。 - Indradhanush Gupta
1
虽然 vc-annotate 的输出格式在许多方面都比 magit-blame 更好,但后者速度 _快得多_,这对我来说更重要。 - markshep

47

我建议使用magit-blame-mode (M-x magit-blame-mode)。与vc-annotate相比,它能以更好的方式提供信息,并且是标准Magit发行版的一部分。您可能希望将其绑定到某个键盘组合上,以便快速切换它。

magit-blame-mode中,使用pn在前一个和后一个更改之间导航,使用RET查看特定提交的差异。


4
啊,我不知道这个。就我个人而言,我发现 vc-annotate 的输出(或任何传统的 blame 输出)比这更易读;但拥有其他选择总是好的。 - phils
4
我觉得在 vc-annotate 的输出中,提交者的名称占用了太多的空间。 - Bozhidar Batsov
12
v 键隐藏细节,但年龄仍然以颜色编码的方式显示责任。 - event_jr
2
我发现magit-blame-mode的输出在混合/交错代码和提交历史的方式下几乎不可读。有没有办法使其显示像vc-annotate(或git blame,或任何其他可读格式)一样分离代码和注释的输出? - ShreevatsaR
3
@ShreevatsaR 实际上,看起来 M-x magit-blame 会责怪那行之前的修订。所以它确实具有 'A' 功能。或者你可以在 magit-blame-mode 中输入 b - Troy Daniels
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接