在MAGIT中比较两个不同分支的foo.bar。

19

这个回答展示了如何在git的两个不同分支中查看特定文件foo.bar之间的差异。我的问题是如何在magit内部执行此操作


3
你可以在 magit 状态缓冲区中键入 :(例如:: diff mybranch master -- myfile.cs),随时发出 git 命令。 - phils
3个回答

15

我使用magit来补充vcvc已经有了这个功能 C-u C-x v =


1
你能否写出使用此绑定时所发出的命令? - Dror
2
自己找出来吧。 <kbd>C-h k</kbd> <kbd>C-x esc esc</kbd> - event_jr
有没有办法在结果缓冲区中添加一些(展开/折叠)功能?就像*magit-diff*缓冲区中可用的那种功能。 - Dror

7

请注意,现在可以直接使用magit实现此功能。

在Magit状态缓冲区中,键入d以打开差异弹出窗口。

然后使用=f和文件名将差异限制为您感兴趣的文件。

最后,进行差异范围r并键入要比较的分支(也可以键入同一分支上的特定提交,请参见类似的问题)。


2
或从文件缓冲区中返回:C-c M-g D r - phils
=f不存在... - sandwood
快捷方式已更改为“--”,您的情况也是这样吗? - Dominik Schrempf

2
从@dominik-schrempf的回答开始,现在也可以使用文本选择来选择差异范围,以比输入提交哈希更快。

因此,一个更快(而且更直观)的步骤如下:

  1. 从任何Magit缓冲区开始,其中包含提交列表
    (例如任何提交日志或Magit状态缓冲区中的最近提交列表):

  2. 使用文本选择选择提交

    1a. 将光标放在所需提交的一端上

    1b. 切换文本选择C-SPC(如果您使用evil-mode,则为V

    1c. 将光标移动到所需提交的另一端

  3. d打开差异弹出窗口

  4. d打开dwim缓冲区或r打开diff范围(在这种情况下它们基本上是相同的,我认为)

对于文本选择部分,它是Emacs的set-mark-command函数。
您可以通过使用Emacs的集成帮助系统了解更多信息:

  • C-h f后跟set-mark-command,或;
  • execute-extended-command
    (这应该是您在上面看到的帮助前缀键C-h之后的第二个好朋友)
    M-x后跟describe-function后跟set-mark-command
这两条路径是等效的,因为每个Emacs按键都调用一个函数。

简而言之,在开始使用Emacs时,经常使用帮助前缀和execute-extended-command

1
你能详细说明一下“选择提交”吗?在日志中,最近的提交下面?我总是只看到指针下提交的差异。 - ericP
刚刚添加了更加精确的信息。^^ 如果这回答了你的问题,请让我知道,如果我有一些更改可能会有帮助。但我不太确定如何增加更多内容而不超出问题的范围,但关于非 magit emacs 细节的更深入信息可以在 (Mastering Emacs)[https://www.masteringemacs.org/article/mastering-key-bindings-emacs] 和 (Ergoemacs)[http://ergoemacs.org/emacs/emacs_esoteric.html] 中找到。祝编程愉快 :) - Raphaël Duchaîne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接