如何用magit区分单个文件?

Dan*_*Dan 51 emacs git-diff magit

假设我在git仓库中对未耦合的文件进行了一些无关的更改.我想分别查看和提交每个文件.

我运行magit-status,并获得已更改文件的列表.但是我能找到的唯一的magit diff命令(d并且D)可以区分整个修改,而不是单个文件.

我想要输出git diff <filename>,但在magit diff缓冲区.我如何让magit只传出一个文件?

phi*_*ils 90

Magit使您可以直接从magit-status缓冲区"单独查看和提交每个文件" ,而无需任何单独的差异缓冲区.

你只需要扩展你感兴趣的文件(用TAB,它会显示文件的差异点); 那么你可以将你想要提交的部分(整个文件,或者单个的黑客,甚至是一个标记的区域)与s阶段(或者u不显示)进行分段.重复该提交中涉及的所有更改,并且一旦完成所有必要的操作,请按c开始提交.

您可能更喜欢使用(重复)获得的可见性循环行为,C-TAB而不是默认使用的简单切换TAB.


如果你真的想在一个单独的缓冲区中查看文件的diff,你可以magit-diff-buffer-file直接调用文件的缓冲区,或者使用"diff"选项(d)magit-file-popup.例如:

(global-set-key (kbd "C-c m d") 'magit-diff-buffer-file)
(global-set-key (kbd "C-c m f") 'magit-file-popup)
Run Code Online (Sandbox Code Playgroud)

另请注意@ assem的评论如下:

您可能还会对默认情况下magit-ediff绑定的内容感兴趣e,并在点处打开diff/file的ediff会话.


默认情况下,Emacs中提供的其他一些替代方案(即不是Magit)是:

  • C-xv= 打电话 vc-diff
  • M-x vc-ediff 对于ediff等价物
  • M-x ediff-revision 创建一个包含更多选项的ediff会话

我绑定vc-ediffC-xvC-=这两个变体有类似的键绑定.

  • 我不知道TAB. (27认同)
  • 您可能也对`magit-ediff`感兴趣,默认情况下绑定到`e`,并在点处打开diff/file的ediff会话. (6认同)
  • 是的,我认为可能就是这种情况.这就是你错过的magit的"杀手级应用"方面,那里!:)您可以暂存或取消暂存整个文件,文件中的单个文件,甚至标记区域.您应该浏览http://magit.github.io/magit/magit.html,因为您可能还错过了其他一些不错的功能. (5认同)

abo*_*abo 22

我建议由magit的创建者观看视频.这是20分钟,它向您展示了工作流程.

另外,一个小提示:您可以使用1 2 3更改当前标题的差异详细程度.

另一个小提示:如果你对帅哥的大小不满意,你可以通过 - 这是正确的 - 标记一个区域并按下来放置任意区域s.这是魔法.我暂时不知道这个选项,我实际上是回到控制台并git add -p采用老式的方式.

  • 令人遗憾的是,4年前的最后一次电视剧节目播出.作为一个社区,Emacs需要更多地接受截屏视频. (8认同)