How can I get the diff between two commits of the same file using magit
?
Directly form git
one can do this. But I don't know how to do it from within magit
. From magit-status
it seems that d
and D
returns the diff of the whole repository. This is very problematic for me as the repository is huge and it causes magit
(and in turn emacs
) to become unresponsive. Is there a way to ask magit
to restrict the search to only one file from the repository?
I also tried, in the magit-status
buffer to do : diff $start_commit..$end_commit -- path/to/file
. This works, but the output is a simple buffer without any highlighting nor any folding options...
In case anyone stumbles across this now, it is now possible to do this in magit (I do this from magit-log but you can probably do it from elsewhere, too):
- Type
d
to open the magit-diff-popup - Type
=f
to specify the file you want to view (enter path relative to the project root dir) - Type
r
to do a diff range. You will be asked for the commit range, for example,4abcde2..HEAD
. Alternately, if you highlight the range of commits in magit-log, the range will be set for you automatically with no prompt.
This way, you end up in a magit-diff buffer complete with highlighting and code folding.
One way to go is to use vc
as suggested by this related answer - in particular C-u C-x v =. However, this return a buffer without the possibility to (un)fold chunks.
来源:https://stackoverflow.com/questions/16564013/magit-how-to-diff-the-same-file-between-two-different-commits-on-the-same-branc