Emacs 如何使用magit区分单个文件?
假设我在git repo中对未耦合的文件做了许多不相关的更改。我想分别检查和提交每个文件 我运行Emacs 如何使用magit区分单个文件?,emacs,git-diff,magit,Emacs,Git Diff,Magit,假设我在git repo中对未耦合的文件做了许多不相关的更改。我想分别检查和提交每个文件 我运行magit status,并获得已更改文件的列表。但是我能找到的唯一的magit diff命令(d和d)可以区分整个版本,而不是单个文件 我想要git diff的输出,但是在magit diff缓冲区中。如何让magit只区分一个文件 Magit使您能够直接从Magit状态缓冲区“单独查看和提交每个文件”,而不需要任何单独的差异缓冲区 您只需展开感兴趣的文件(使用TAB键,它显示文件在某一点上的差异)
magit status
,并获得已更改文件的列表。但是我能找到的唯一的magit diff命令(d
和d
)可以区分整个版本,而不是单个文件
我想要git diff的输出,但是在magit diff缓冲区中。如何让magit只区分一个文件 Magit使您能够直接从Magit状态
缓冲区“单独查看和提交每个文件”,而不需要任何单独的差异缓冲区
您只需展开感兴趣的文件(使用TAB键,它显示文件在某一点上的差异);然后,您可以将要提交的部分(整个文件,或单个大块,甚至是标记的区域)用s暂存(或u取消暂存)。对该提交中涉及的所有更改重复此操作,一旦所有必要的内容都已转移,请按c开始提交
您可能更喜欢使用C-TAB(反复)获得的可见性循环行为,而不是默认情况下使用TAB获得的简单切换
如果确实希望在单独的缓冲区中查看文件的差异,可以通过直接调用
magit diff buffer file
或使用magit file弹出窗口中的“diff”选项(d)从文件的缓冲区进行查看。e、 g:
(global-set-key (kbd "C-c m d") 'magit-diff-buffer-file)
(global-set-key (kbd "C-c m f") 'magit-file-popup)
另请注意@assem的评论如下:
您可能还对默认绑定到e的magit ediff
感兴趣,并在此时为diff/文件打开一个ediff会话
默认情况下,Emacs中提供的其他一些备选方案(即非Magit)包括:
- C-xv=调用
vc diff
- M-x
vc ediff
用于ediff等效物
- M-x
ediff修订版
创建具有更多选项的ediff会话
我将vc ediff
绑定到C-xvC-=以使这两个变体具有相似的键绑定。我建议观看magit的创建者编写的。
这是20分钟,它向您显示了预期的工作流程
还有一个小提示:你可以用1-2-3来改变
当前标题的差异详细程度
另一个小贴士:如果你对这些帅哥的身材不满意,
您可以通过-没错-标记
区域和压力s。这是魔法。
我有一段时间不知道这个选项,实际上我
回到控制台,以老式的方式执行git add-p
。在使用工具时不违反规则肯定有好处,其他答案就是明证
另一方面,有时你只是想告诉你的编辑该做什么,让互联网上的人回答你的问题,而不是告诉你想做别的事情
magit提供了一个菜单界面,可通过M-x magit文件弹出窗口
对当前文件执行操作。从这里你需要按的键是“du”。这可能对您来说按键太多,如果是这种情况,您可以直接这样调用magit diff
:
(defun magit-diff-given-file (&optional file)
(interactive)
(unless file
(setf file buffer-file-name))
(magit-diff-working-tree "HEAD" nil (list (file-relative-name file (magit-toplevel file)))))
您可能希望为此定义自己的函数和键绑定
magit diff
比vc diff
有优势,因为if允许您跳转到diff的位置。我不知道选项卡。对,我想可能是这样。这几乎就是你错过的magit的“杀手级应用”方面,好了您可以对整个文件、文件中的单个大块,甚至标记的区域进行分级或取消分级。你应该浏览一下,因为你可能还错过了其他一些好的功能。我刚刚用了一张备忘单。我不知道“section visibility”命令是什么意思,我只是认为s
在我的magit版本中不起作用。您可能还对默认绑定到e
的magit ediff
感兴趣,Peter Becich:毫无疑问,在ediff调用的任何一方,您都可以使用代码来记住和恢复窗口配置,但就我个人而言,这类事情只能依靠赢家模式。一两次快速的C-C总是让事情回到原来的样子,这对任何事情都有效。令人遗憾的是,magit的最后一次放映是在4年前。作为一个社区,Emacs需要更多地接受屏幕广播。在Ediff dwimming中使用e onmagit status
怎么样?vc diff
还可以让您跳转到diff的位置(这可能是一个新功能)。我希望我能在未来几十次提高投票率“有时候,你只是想告诉编辑该做什么,让互联网上的人回答你的问题,而不是告诉你想做其他事情。”