magit:如何在同一分支上的两个不同提交之间区分同一个文件?

时间:2013-05-15 11:37:18

标签: git emacs magit

如何使用magit获取相同文件的两次提交之间的差异?

直接形成git可以this。但我不知道如何在magit内做到这一点。从magit-status开始,dD似乎返回整个存储库的差异。这对我来说非常有问题,因为存储库巨大并且导致magit(并且反过来emacs)变得无响应。有没有办法让magit将搜索限制在存储库中只有一个文件?

我还尝试在magit-status缓冲区中执行: diff $start_commit..$end_commit -- path/to/file。这是有效的,但输出是一个简单的缓冲区,没有任何突出显示也没有任何折叠选项......

4 个答案:

答案 0 :(得分:7)

如果现在有人遇到这种情况,现在可以在magit中执行此操作(我从magit-log执行此操作,但您也可以从其他地方执行此操作):

  1. 键入d以打开magit-diff-popup
  2. 键入=f以指定要查看的文件(输入相对于项目根目录的路径)
  3. 键入r以执行差异范围。系统将要求您提交提交范围,例如4abcde2..HEAD。或者,如果您在magit-log中突出显示提交范围,则会自动为您设置范围而不提示。
  4. 这样,你最终会进入一个带有高亮和代码折叠的magit-diff缓冲区。

答案 1 :(得分:5)

一种方法是使用this related answer建议的vc - 特别是 C-u C-x v = 。但是,这会返回一个缓冲区而不可能(不)折叠块。

答案 2 :(得分:2)

从@cdidyk答案开始,现在(现在)还可以通过文本选择来选择差异的范围,从而比键入提交的哈希更快。

所以更快(更直观)的序列可能是:

  1. 使用文本选择C-SPC(如果使用邪恶模式,则选择V)选择提交
  2. =f指定文件(相对于项目根文件夹的路径)
  3. d打开差异弹出窗口
  4. d打开dwim缓冲区,或者打开r进行比较范围(我认为在这种情况下,它们的作用大致相同)

答案 3 :(得分:0)

您也可以执行 M-xmagit-ediff-compare

然后输入旧提交的 SHA,然后输入要与 HEAD 进行比较的文件的文件名,所有这些都在同一分支上。