我在 (http://git-scm.com/download/win) 中使用 git 1.9.4 for windows。
$ git difftool branchA branchB
为 diff 中的所有文件一次打开一个文件 vsdiffmerge
。
$ git difftool --no-prompt branchA branchB
尝试一次打开所有文件(我想要发生的事情)但是 vsdiffmerge 无法正确处理任何发生的波纹管.
- 将打开 vsdiffmerge 的多个空实例
- 一个已经打开的实例会将其打开的选项卡替换为差异列表中的下一个文件
我如何配置我的 difftool,以便行为是 vsdiffmerge 的一个实例,所有差异的多个选项卡?
git 配置:
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
[diff]
tool = vsdiffmerge
[difftool]
prompt = true
[difftool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
keepbackup = false
trustexistcode = true
[merge]
tool = vsdiffmerge
[mergetool]
prompt = true
[mergetool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
keepbackup = false
trustexistcode = true
最佳答案
答案是,删除末尾的/t
(或//t
,因为转义)。
参数 /t
打开一个临时标签。这是选项卡,已被替换。如果没有此参数,Visual Studio 将打开一个永久选项卡并将其添加到已打开的其他选项卡。
另见此处:
https://roadtoalm.com/2013/10/22/use-visual-studio-as-your-diff-and-merging-tool-for-local-files/
PS:即使我在最后删除了 /t
,对我来说,diff 仍然在一个临时选项卡中打开。这样做的原因 - 至少在我的情况下 - 是 Visual Studio 或 Git 忽略了工具 vsdiffmerge
中的所有设置。在我重命名该工具后,一切都按预期工作。
因此,我建议将该工具重命名为类似vsdiff
的名称,删除/t
并重试。
不要忘记像 git difftool -t vsdiff --no-prompt branchA branchB
那样调用它来显式使用名为 vsdiff
的工具或设置 vsdiff
作为默认工具。
关于git - 一次为多个文件配置 vsdiffmerge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26596776/