我希望git
向我展示在两个特定提交之间发生变化的所有行,包括每行的文件名和行号。我想输出类似于
file.cpp:20:- void deletedFunction()
file.cpp:20:+ int addedFunction()
Makefile:3:-# removed comment
我想使用它通过编译模式的next-error
命令轻松浏览所有已更改的提交 emacs 。因此,第二个:
之后的确切输出可能看起来不同,但filename:line:...
应该在那里。此外,并非所有更改都必须列出 - 仅添加或删除 - 仅适用于启动。
答案 0 :(得分:2)
很高兴看到我的评论解决了你的问题:) 我说: “我想知道(强制性问题):你对magit不满意,为什么?你可以看到差异,导航和点击转到文件和行nb。对我来说很好。»
Magit手册住在这里:http://magit.github.io/master/magit.html 和github上的代码:https://github.com/magit/magit
完整的介绍:http://www.masteringemacs.org/articles/2013/12/06/introduction-magit-emacs-mode-git/
(像往常一样,它适用于ELPA:M-x list-packages
)
享受!
ps:我使用的两个配置:
; use ido to switch branches
; https://github.com/bradleywright/emacs-d/blob/master/packages/init-magit.el
(setq magit-completing-read-function 'magit-ido-completing-read)
;; open magit status in same window as current buffer
;; (setq magit-status-buffer-switch-function 'switch-to-buffer)
;; highlight word/letter changes in hunk diffs
(setq magit-diff-refine-hunk t)
答案 1 :(得分:2)
我从未使用过magit
(虽然我听过很好的事情),而且我很少使用git
(我是hg
家伙),但所有这些应该适用于vc
模式支持的VCS。
它不像compilation-mode
那样有效,但您可以使用diff-mode
轻松浏览差异。
获取差异缓冲区:
C-x v =
对当前文件执行diff。C-x v D
在目录上执行递归diff。C-x v d
将您带到一个缓冲区,将所有修改/添加/未跟踪/等。回购中的文件。您可以使用m
选择它们,并使用=
区分所选文件。在差异缓冲区中:
n
转到下一个大块。p
转到上一个大块。N
转到下一个文件。P
转到上一个文件。o
转到当前大块的源文件。答案 2 :(得分:1)
请注意git-gutter:https://github.com/emacsorphanage/git-gutter。
它为您提供:git-gutter:next-hunk
和git-gutter:previous-hunk
。与magit
结合使用可以带来很好的体验。