我知道:Glog
将使用当前缓冲区中文件的所有版本填充quickfix列表,并且我可以在这些文件上点击<enter>
以查看该特定版本的文件,但是有一种简单的方法可以查看特定版本与先前版本的差异(以便轻松查看已更改的内容)?
编辑:我所追求的是在vim的垂直差异中看到这些变化中的每一个:git log -p -- path/to/file.txt
。
答案 0 :(得分:11)
这就是我使用的:
:Gdiff [revision]
有关其他选项,请参阅:help Gdiff
(垂直与水平分割等)。
例如:
:Gdiff HEAD
或者如果您有修订号(即:aaffdfdstsdgssetds):
:Gdiff aaffdfds
答案 1 :(得分:3)
我相信它很简单:
:vert diffsplit #
答案 2 :(得分:3)
无法逃避做我想要的事情(它要么不做或者我不知道如何使用它),但我确实找到了提供所需行为的插件:https://github.com/kablamo/vim-git-log。
(它不会在quickfix列表中显示差异,但在完整大小的缓冲区中,这是正常的)
答案 3 :(得分:2)
首先,打开要与之区分的文件。
如果提交了更改,请输入:Gdiff HEAD~1
如果更改 NOT 已提交,请输入:Gdiff HEAD
。
答案 4 :(得分:1)
使用:Glog
时,您只需在<cr>
开始的行上按diff --git
即可。它将打开差异。您可能还想查看:Gdiff
。你可能想看看Drew Neil的vimcasts,The Fugitive Series。
如需更多帮助,请参阅
:h fugitive
:h :Glog
:h :Gdiff
答案 5 :(得分:1)
您可以按照以下步骤实现此目的:
0
寄存器中。:Gdiff <C-r>0
。这应该激发适当的差异。
您可以通过将此映射添加到.vimrc
文件来自动执行第2步和第3步:
nnoremap <Leader>gd /\.git<CR>wwwyw<Esc>:cclose<CR>:Gdiff <C-r>0<CR>
请注意,映射假设您的光标位于行的开头(.git//
部分之前)。
答案 6 :(得分:0)
查看提交差异的一种方法是:
:Gedit [revision]
答案 7 :(得分:0)
Glog
C
,打开提交diff --git a/you/file b/you/file
的行,然后按<cr>
Glog
Gdiff
。 完成!强> Gdiff
会将当前缓冲区与索引中的缓冲区区分开来,这正是您想要的
您还可以考虑使用插件vim-unimpaired,它提供了两个地图]q
和[q
来导航quickfix列表。 (还有]Q
和[Q
)
答案 8 :(得分:0)
我编写了一个函数,允许您对当前文件的先前版本进行区分。我使用它来查看工作副本和修订版“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
你可以这样调用这个函数(下面的例子反对第三个版本):
:call Diffrev(2)
答案 9 :(得分:0)
尝试compilerOptions.lib
。这将以左右模式显示当前文件的差异。