I'd like to do a diff on the current file / buffer compared to the git repository.
Ideally a single function that could be called, or binded to a keyboard shortcut.
Emacs Stack Exchange is a question and answer site for those using, extending or developing Emacs. It only takes a minute to sign up.
Sign up to join this communityFirstly, make sure you're aware of https://stackoverflow.com/a/17799517
If you want a Magit diff buffer for the current file, you can call magit-diff-buffer-file
directly, or use the "diff" option (d) in magit-file-popup
. e.g.:
(global-set-key (kbd "C-c m d") 'magit-diff-buffer-file)
(global-set-key (kbd "C-c m f") 'magit-file-popup)
You can alternatively invoke vc-diff
with C-xv=
(spacemacs/set-leader-keys "gfd" 'magit-diff-buffer-file)
A convenient binding for spacemacs.
Feb 7, 2019 at 14:59
magit-file-popup
is no longer available, it's successor (in spirit at least) is magit-file-dispatch
.
Sep 30, 2021 at 8:39
If you have ediff
set up properly (and you should! it's awesome), then you can use M-x ediff-revision
to run ediff
for the current file against any of its revisions in Git, or in whatever VC system you use.
ediff-revision
is awesome, you can do similar to IntelliJ's git diff on the current file, but perhaps even nicer once you "get it" (make sure to find the little help window by pressing ?
to see how you can manipulate the diff, and as usual, to quit press q
!).