54

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

我如何使用 vim-fugitive 来 git diff

  • 暂存文件?
  • 任何 git 修订版?
4

4 回答 4

75

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

:Gdiff :0

当前文件与其他一些[修订]之间的差异

:Gdiff [revision]

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

:Gdiff ~3
于 2013-03-12T19:44:55.363 回答
38

您可以使用: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>

我推荐unimpaired.vimTim Pope 的插件。

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

<Leader>gl查看历史

]q[q在版本之间移动 (unimpaired.vim)

<Leader>gd打开diff

:q结束diff

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

于 2015-03-07T16:16:20.077 回答
14

添加到上面的答案:

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

Gdiff branch_name:path/to/dir/filename.txt
于 2015-01-12T06:57:18.687 回答
2

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

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