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
我在自己的分支上工作了一段时间。但是,我无法重现 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