如何使用magit
获取相同文件的两次提交之间的差异?
直接形成git
可以this。但我不知道如何在magit
内做到这一点。从magit-status
开始,d
和D
似乎返回整个存储库的差异。这对我来说非常有问题,因为存储库巨大并且导致magit
(并且反过来emacs
)变得无响应。有没有办法让magit
将搜索限制在存储库中只有一个文件?
我还尝试在magit-status
缓冲区中执行: diff $start_commit..$end_commit -- path/to/file
。这是有效的,但输出是一个简单的缓冲区,没有任何突出显示也没有任何折叠选项......
答案 0 :(得分:7)
如果现在有人遇到这种情况,现在可以在magit中执行此操作(我从magit-log执行此操作,但您也可以从其他地方执行此操作):
d
以打开magit-diff-popup =f
以指定要查看的文件(输入相对于项目根目录的路径)r
以执行差异范围。系统将要求您提交提交范围,例如4abcde2..HEAD
。或者,如果您在magit-log中突出显示提交范围,则会自动为您设置范围而不提示。这样,你最终会进入一个带有高亮和代码折叠的magit-diff缓冲区。
答案 1 :(得分:5)
一种方法是使用this related answer建议的vc
- 特别是 C-u C-x v = 。但是,这会返回一个缓冲区而不可能(不)折叠块。
答案 2 :(得分:2)
从@cdidyk答案开始,现在(现在)还可以通过文本选择来选择差异的范围,从而比键入提交的哈希更快。
所以更快(更直观)的序列可能是:
C-SPC
(如果使用邪恶模式,则选择V
)选择提交=f
指定文件(相对于项目根文件夹的路径)d
打开差异弹出窗口d
打开dwim缓冲区,或者打开r
进行比较范围(我认为在这种情况下,它们的作用大致相同)答案 3 :(得分:0)
您也可以执行 M-x
和 magit-ediff-compare
。
然后输入旧提交的 SHA,然后输入要与 HEAD
进行比较的文件的文件名,所有这些都在同一分支上。