13

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

直接形成git一个就可以做到这一点。但我不知道如何从内部做到这一点magit。看起来magit-status并返回整个d存储库的D差异。这对我来说非常有问题,因为存储库很大,它会导致(进而)变得无响应。有没有办法要求将搜索限制在存储库中的一个文件?magitemacsmagit

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

4

4 回答 4

8

万一现在有人偶然发现了这一点,现在可以在 magit 中执行此操作(我从 magit-log 执行此操作,但您也可以从其他地方执行此操作):

  1. 键入d以打开 magit-diff-popup
  2. 键入=f以指定要查看的文件(输入相对于项目根目录的路径)
  3. 键入r以执行差异范围。系统将要求您提供提交范围,例如4abcde2..HEAD. 或者,如果您在 magit-log 中突出显示提交范围,则会自动为您设置范围,而不会提示。

这样,您最终会进入一个 magit-diff 缓冲区,其中包含突出显示和代码折叠。

于 2017-03-27T16:31:44.187 回答
5

一种方法是按照这个相关答案vc的建议使用- 特别是。但是,这会返回一个缓冲区,而不能(取消)折叠块。C-u C-x v =

于 2013-05-15T11:49:38.190 回答
3

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

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

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

你也可以做M-xmagit-ediff-compare

然后输入旧提交的 SHA,然后输入要比较的文件的文件名HEAD,都在同一个分支上。

于 2021-05-14T08:15:52.407 回答