git 个分支之间的 Vimdiff 文件

Vimdiff files between git branches

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

我准确地写了 this gist 以便我可以将当​​前缓冲区与任意规范进行比较。我通常这样使用它::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>)

如果你将 vimdiff 配置为你的 git difftool 并且你想比较分支 foo 和分支 bar 切换到分支 foo 和 运行:

git difftool bar

将 vimdiff 设置为 difftool 运行 以下命令:

git config --global diff.tool vimdiff