git 分支之间的 Vimdiff 文件

Sim*_*219 2 git vim

我已经在自己的分支机构工作了一段时间。但是,我无法重现主分支产生的结果。所以我现在正在检查要调试的脚本之间的差异。有没有办法像vimdiff一样比较分支之间的脚本?

rom*_*inl 7

我准确地写了这个要点,以便我可以将当​​前缓冲区与任意规格进行比较。我通常这样使用它:Diff origin/branch-name

function! Diff(spec)
    vertical new
    setlocal bufhidden=wipe buftype=nofile nobuflisted noswapfile
    let cmd = "++edit #"
    if len(a:spec)
        let cmd = "!git -C " . shellescape(fnamemodify(finddir('.git', '.;'), ':p:h:h')) . " show " . a:spec . ":#"
    endif
    execute "read " . cmd
    silent 0d_
    diffthis
    wincmd p
    diffthis
endfunction
command! -nargs=? Diff call Diff(<q-args>)
Run Code Online (Sandbox Code Playgroud)

例子

  • 这与 [vim-fugitive](https://github.com/tpope/vim-fugitive) 的 `:Gdiffsplit` 命令非常相似。用法: `:Gdiffsplitbranch_name` 来 vimdiff 当前文件与不同分支中的相同文件 (3认同)