如何使用vim-fugitive查看任何提交的git diff?

时间:2013-03-12 18:42:19

标签: vim git-diff vimdiff vim-fugitive

vim-fugitive并排git diff非常适合查看未分段文件的差异。

我如何使用vim-fugitive来git diff

  • 分阶段文件?
  • 任何git修订版?

5 个答案:

答案 0 :(得分:49)

当前文件与索引之间的差异

:Gdiff :0

当前文件与其他[修订]

之间的差异
:Gdiff [revision]

当前文件与当前文件3之间的差异提交:

:Gdiff ~3

答案 1 :(得分:25)

您可以使用:Glog获取当前文件的历史记录更改。您可以使用:cnext:cprevious在更改之间移动。当您点击要比较的版本时,您可以使用:Gdiff。您可以退出vimdiff关闭缓冲区:q并使用:Gedit退出历史记录日志。

这是我的.vimrc键盘配置:

  nnoremap <leader>gs :Gstatus<CR>
  nnoremap <leader>gc :Gcommit -v -q<CR>
  nnoremap <leader>ga :Gcommit --amend<CR>
  nnoremap <leader>gt :Gcommit -v -q %<CR>
  nnoremap <leader>gd :Gdiff<CR>
  nnoremap <leader>ge :Gedit<CR>
  nnoremap <leader>gr :Gread<CR>
  nnoremap <leader>gw :Gwrite<CR><CR>
  nnoremap <leader>gl :silent! Glog<CR>
  nnoremap <leader>gp :Ggrep<Space>
  nnoremap <leader>gm :Gmove<Space>
  nnoremap <leader>gb :Git branch<Space>
  nnoremap <leader>go :Git checkout<Space>
  nnoremap <leader>gps :Dispatch! git push<CR>
  nnoremap <leader>gpl :Dispatch! git pull<CR>

我推荐Tim Pope的unimpaired.vim插件。

使用该配置,我的工作流程为:

<Leader>gl查看历史记录

]q[q在不同版本之间移动(unmpaired.vim)

<Leader>gd打开diff

:q结束diff

<Leader>ge返回我的工作副本。

答案 2 :(得分:9)

添加到上面的答案:

如果你想从另一个分支获得特定文件的差异

Gdiff branch_name:path/to/dir/filename.txt

答案 3 :(得分:0)

如果使用:Glog --:Glog -- %(对于当前文件),我只是按照查看差异的方式放在这里:

  1. :Glog --
  2. :cw打开提交列表
  3. 导航到提交,并显示其信息以及受影响的文件
  4. 专注于文件路径
  5. <c-w>gf并在新标签页中打开差异
  6. :tabclose只关闭标签并获取差异之前的状态

答案 4 :(得分:0)

vim命令行中需要的帮助:

h逃犯修订