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

比较MAGIT中两个不同分支的foo.bar,git,emacs,magit,Git,Emacs,Magit,这显示了如何在git的两个不同分支中查看特定文件foo.bar之间的差异。我的问题是如何在内部实现这一点?我使用magit来补充vc。vc已经有了这个功能C-u C-x v=只是想注意一下,这在magit中是可以直接实现的 在Magit状态缓冲区中,键入d以打开差异弹出窗口 然后使用=f和文件名将差异限制到您感兴趣的文件 最后,做一个diff range r并在您想要比较的分支中键入,也可以在同一分支上键入特定的提交,请参见。从@dominik schrempf answer开始,现在还可以通过

这显示了如何在git的两个不同分支中查看特定文件foo.bar之间的差异。我的问题是如何在内部实现这一点?

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

只是想注意一下,这在magit中是可以直接实现的

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

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


最后,做一个diff range r并在您想要比较的分支中键入,也可以在同一分支上键入特定的提交,请参见。

从@dominik schrempf answer开始,现在还可以通过文本选择来选择diff的范围,比键入提交的哈希更快

因此,更快、更直观的序列可能是:

从任何带有提交列表的Magit缓冲区开始 与Magit状态缓冲区中的任何提交日志或最近提交列表一样:

使用文本选择选择提交

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

1b。如果使用邪恶模式,则切换文本选择C-SPC或V

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

d打开差异弹出窗口

我认为,在这种情况下,打开dwim缓冲区或r for diff range时,它们的操作基本相同

对于文本选择部分,它是Emacs的设置标记命令功能。 您可以使用Emacs的集成帮助系统了解更多信息:

C-h f遵循设定标记命令,或; 从execute extended命令 除了上面的帮助前缀键C-h之外,哪一个应该是你的第二个好朋友 M-x后接描述功能,后接设置标记命令。 这两条路径是等效的,因为每个Emacs keybindings都在调用一个函数


简而言之,经常使用帮助前缀和执行扩展命令,尤其是在开始使用Emacs时。

您始终可以通过键入:例如::diff mybranch master-myfile.csc来从magit状态缓冲区发出git命令。您可以编写使用此绑定为您发出的命令吗?自行查找。C-h k C-x有没有办法向生成的缓冲区添加一些展开功能?类似于*magit diff*buffer中提供的一个。或者从文件缓冲区:C-C M-g D r您能详细说明选择提交吗?在日志中的“最近提交”下?我总是在指针下看到提交的差异。只是添加了一些更精确的信息。^让我知道这是否回答了您的问题,如果我有更多的修改,可能会有所帮助。我不太确定如何在不超出问题范围的情况下添加更多内容,但有关非magit emacs细节的更深入信息可在Mastering emacs[和Ergoemacs[.Happy Hacking: