26

我知道这:Glog将使用当前缓冲区中文件的所有版本填充快速修复列表,并且我可以点击<enter>这些以查看该特定版本的文件,但是有没有一种简单的方法可以查看特定版本的差异以前的版本(轻松查看发生了什么变化)?

编辑:我所追求的是在 vim: 的垂直差异中看到这些变化中的每一个git log -p -- path/to/file.txt

4

10 回答 10

19

这就是我使用的:

:Gdiff [revision]

另请参阅:help Gdiff其他选项(垂直与水平拆分等)。

例如:

:Gdiff HEAD

或者如果您有修订号(即:aaffdfdstsdgssetds):

:Gdiff aaffdfds
于 2013-05-29T13:53:27.820 回答
6

我相信它很简单:

:vert diffsplit #
于 2013-05-29T01:14:24.027 回答
4

无法做我想做的事(它要么不做,要么我不知道如何使用它),但我确实找到了提供所需行为的插件:https ://github.com/kablamo /vim-git-log

(它没有在快速修复列表中显示差异,而是在全尺寸缓冲区中,这没关系)

于 2013-08-29T23:33:05.643 回答
3

首先,打开要比较的文件。

如果更改已提交,请输入:Gdiff HEAD~1
如果未提交更改请输入:Gdiff HEAD

于 2016-03-07T10:15:55.013 回答
2

要与以前的版本进行比较,请按照下列步骤操作:

  1. 采用Glog
  2. 导航到所需的版本
  3. type C,打开提交
  4. 转到包含的行diff --git a/you/file b/you/file并按<cr>

此外,要将以前的版本与索引中的版本(工作版本)进行比较,您可以这样做:

  1. 采用Glog
  2. 导航到所需的版本
  3. Gdiff在这个没有参数的新窗口中使用。完毕!

Gdiff没有参数会将当前缓冲区与index中的缓冲区进行区分,这正是您想要的

您还可以考虑使用插件vim-unimpaired,它提供两个地图]q[q导航快速修复列表。(还有]Q[Q

于 2017-09-26T10:26:17.097 回答
1

使用时,:Glog您只需按下<cr>开始的行diff --git。它将打开差异。您可能还想查看:Gdiff. 你可能想看看 Drew Neil 的vimcastsThe Fugitive Series

如需更多帮助,请参阅

:h fugitive
:h :Glog
:h :Gdiff
于 2013-05-29T15:13:53.377 回答
1

您可以通过以下步骤实现此目的:

  1. 将焦点更改为 quickfix 窗口并导航到与您感兴趣的提交对应的行。
  2. 在该行中找到提交哈希并将其拉出(哈希现在在0寄存器中。
  3. 关闭快速修复缓冲区,然后执行:Gdiff <C-r>0.

这应该会引发适当的差异。

您可以通过将此映射添加到您的.vimrc文件来自动执行步骤 2 和 3 :

nnoremap <Leader>gd /\.git<CR>wwwyw<Esc>:cclose<CR>:Gdiff <C-r>0<CR>

请注意,映射假定您的光标位于行首(在该.git//部分之前)。

于 2017-03-14T05:51:58.003 回答
1

试试:vert Gdiff。这将以左右模式显示当前文件的差异。

于 2020-10-21T13:24:37.903 回答
0

查看提交差异的一种方法是:

:Gedit [revision]
于 2014-12-15T09:13:10.293 回答
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

您可以像这样调用该函数(下面的示例与第 3 次修订的差异):

:call Diffrev(2)

于 2018-02-02T23:01:22.690 回答