git - 一次为多个文件配置 vsdiffmerge

标签 git visual-studio-2012 git-diff

我在 (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/

相关文章:

git - 更改链接到我的 ssh 公钥的电子邮件会有什么后果?

git rebase : "Could not apply (hash)." I'm lost

git - 我应该将外部库的 TypeScript 定义文件检查到 git 中吗?

windows - Visual Studio 2012 的图形用户界面是如何实现的以及我们如何制作外观相似的应用程序

git - 新的 git diff 压实启发式方法不起作用

git - 配置多个 git mergetool 和 difftool 以便根据扩展选择合适的工具

git - `git merge -s theirs` 需要但不存在

visual-studio-2012 - 在 TFS 工作项模板中添加标签作为可编辑字段

c++ - VS 2012/VC11 中的对齐和 STL

git - 打印差异百分比