使用Visual Studio 2012的内置合并工具和Git

Ada*_*ery 30 git diff merge git-extensions visual-studio-2012

所以,我不知道是否有人注意到了,但是与VS2012一起打包的新合并工具是最大的恶心.我最近移动到Git进行源代码控制,并且真的希望能够将VS2012设置为我的默认difftool/mergetool.

有关如何做到这一点的任何建议?我宁愿在活动的VS2012窗口中启动diff/merge,如果可能的话,不是新的实例.

gua*_*ome 77

本文介绍了如何执行此操作.我尝试了这个,它的工作原理.在我的用法中,差异是在任何现有的Visual Studio实例中打开的,这是您的首选.

[diff]
    tool = vsdiffmerge
[difftool]
      prompt = false
[difftool "vsdiffmerge"]
      cmd = '"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t
      keepbackup = false
      trustexitcode = true
[merge]
      tool = vsdiffmerge
[mergetool]
      prompt = false
[mergetool "vsdiffmerge"]
      cmd = '"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/vsdiffmerge.exe"' "$REMOTE" "$LOCAL" "$BASE" "$MERGED" //m
      keepbackup = false
      trustexitcode = true
Run Code Online (Sandbox Code Playgroud)

或者用于%VSINSTALLDIR%始终引用与您打开的命令行匹配的Visual Studio版本(这仅适用于通过使用Visual Studio命令提示符快捷方式或手动调用设置Visual Studio环境时vsvars32.bat):

[diff]
    tool = vsdiffmerge
[difftool]
      prompt = false
[difftool "vsdiffmerge"]
      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t
      keepbackup = false
      trustexitcode = true
[merge]
      tool = vsdiffmerge
[mergetool]
      prompt = false
[mergetool "vsdiffmerge"]
      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" "$BASE" "$MERGED" //m
      keepbackup = false
      trustexitcode = true
Run Code Online (Sandbox Code Playgroud)

  • @jessehouwing您是否每天都使用visual studio命令提示符?我打开它可能每两年一次. (2认同)
  • @AdamDrewery我遇到了像你这样的问题.在我的情况下,事实证明我已将Visual Studio配置为以管理员身份运行,并且我试图从非提升的命令提示符启动vsdiffmerge.我的猜测是vsdiffmerge正在开启devenv,当它试图升级到Admin时它默默地失败了.如果我从Admin命令提示符启动它,它对我有用. (2认同)
  • 我很困惑"$ LOCAL"和"$ REMOTE $,特别是因为他们的命令在difftool和mergetool中有所不同.有人可以启发我吗? (2认同)

R0M*_*RMY 13

如果您在Visual Studio 中使用Git源代码控制提供程序,则看起来此功能已实现,并且从1.0.0版开始提供.

或者如果您开始使用Microsoft的 git工具,那么它也将使用内置的diff工具.从一些截图来看,它看起来像是双向合并,结果在底部.