Search code examples
gitemacsmagit

git blame with commit details in emacs


From emacs, how can I see the details (e.g. commit message) of the commit that last changed the line at point?

I have magit installed.


Solution

  • It is not necessary to use magit for this particular operation - vanilla emacs can do it.

    (Also, because this uses vc, this should work identically in any version control system that vc supports.)

    First, use the vc-annotate command, which is bound to the key sequence C-x v g.

    Now, the point should be at the commit id that you are interested in. (If not, you might need to use C-x 1 and/or v so that you can see which line is which, in order to navigate to the right one.) You might be able to see the diff for that file using = now - if you get an error beginning with "cannot diff from any revision prior...", that probably means that this revision created the file (and that's probably a bug in emacs).

    The author and date are already visible in the Annotate buffer that vc-annotate produced.

    To see the commit message, press l (the letter, not the number 1) in the Annotate buffer. To see what the file looked like at that revision, press f in either the Annotate buffer or the vc-change-log buffer.