我知道这:Glog
将使用当前缓冲区中文件的所有版本填充快速修复列表,并且我可以点击<enter>
这些以查看该特定版本的文件,但是有没有一种简单的方法可以查看特定版本的差异以前的版本(轻松查看发生了什么变化)?
编辑:我所追求的是在 vim: 的垂直差异中看到这些变化中的每一个git log -p -- path/to/file.txt
。
我知道这:Glog
将使用当前缓冲区中文件的所有版本填充快速修复列表,并且我可以点击<enter>
这些以查看该特定版本的文件,但是有没有一种简单的方法可以查看特定版本的差异以前的版本(轻松查看发生了什么变化)?
编辑:我所追求的是在 vim: 的垂直差异中看到这些变化中的每一个git log -p -- path/to/file.txt
。
这就是我使用的:
:Gdiff [revision]
另请参阅:help Gdiff
其他选项(垂直与水平拆分等)。
例如:
:Gdiff HEAD
或者如果您有修订号(即:aaffdfdstsdgssetds):
:Gdiff aaffdfds
我相信它很简单:
:vert diffsplit #
无法做我想做的事(它要么不做,要么我不知道如何使用它),但我确实找到了提供所需行为的插件:https ://github.com/kablamo /vim-git-log。
(它没有在快速修复列表中显示差异,而是在全尺寸缓冲区中,这没关系)
首先,打开要比较的文件。
如果更改已提交,请输入:Gdiff HEAD~1
。
如果未提交更改,请输入:Gdiff HEAD
。
Glog
C
,打开提交diff --git a/you/file b/you/file
并按<cr>
Glog
Gdiff
在这个没有参数的新窗口中使用。完毕!Gdiff
没有参数会将当前缓冲区与index中的缓冲区进行区分,这正是您想要的
您还可以考虑使用插件vim-unimpaired,它提供两个地图]q
并[q
导航快速修复列表。(还有]Q
和[Q
)
使用时,:Glog
您只需按下<cr>
开始的行diff --git
。它将打开差异。您可能还想查看:Gdiff
. 你可能想看看 Drew Neil 的vimcasts,The Fugitive Series。
如需更多帮助,请参阅
:h fugitive
:h :Glog
:h :Gdiff
您可以通过以下步骤实现此目的:
0
寄存器中。:Gdiff <C-r>0
.这应该会引发适当的差异。
您可以通过将此映射添加到您的.vimrc
文件来自动执行步骤 2 和 3 :
nnoremap <Leader>gd /\.git<CR>wwwyw<Esc>:cclose<CR>:Gdiff <C-r>0<CR>
请注意,映射假定您的光标位于行首(在该.git//
部分之前)。
试试:vert Gdiff
。这将以左右模式显示当前文件的差异。
查看提交差异的一种方法是:
:Gedit [revision]
我编写了一个函数,允许您与当前文件的先前版本进行比较。我用它来查看工作副本和修订“n”次之间的差异。
这是放入 .vimrc 的代码(需要https://github.com/tpope/vim-fugitive):
"Diff the current file against n revision (instead of n commit)
function! Diffrev(...)
let a:target = @%
"check argument count
if a:0 == 0
"no revision number specified
let a:revnum=0
else
"revision number specified
let a:revnum=a:1
endif
let a:hash = system('git log -1 --skip='.a:revnum.' --pretty=format:"%h" ' . a:target)
execute 'Gdiff' . a:hash
endfunc
您可以像这样调用该函数(下面的示例与第 3 次修订的差异):
:call Diffrev(2)