Использование встроенного средства слияния Visual Studio 2012 с Git

Итак, я не знаю, заметил ли кто-нибудь, но новый инструмент слияния, упакованный с VS2012, болен-o по максимуму. Недавно я перешел в Git для управления версиями и действительно хочу настроить VS2012 как мой difftool/mergetool по умолчанию.

любые предложения о том, как это сделать? Я бы предпочел, чтобы diff / merge запускался в активном окне VS2012, а не в новом экземпляре, если это возможно.

3 ответов


Если вы используете Поставщик Управления Версиями Git С Visual Studio это выглядит как эта функция был реализован и доступен с версии 1.0.0.

или если вы начнете использовать Microsoft инструменты для git, который также будет использовать встроенный инструмент сравнения. От некоторых скриншоты, похоже, это будет двухстороннее слияние, с результатом внизу.


в этой статье объясняет как это делать. Я пробовал это, и это работает. В моем использовании diff был открыт в любом существующем экземпляре 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

или использовать %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

решение, отмеченное как ответ, не работало для меня ,но это (у меня был vsdiffmerge.exe местоположение в моем пути - не знаю, было ли у него что-нибудь с ним):

[diff]
    tool = vsdiffmerge
    guitool = vsdiffmerge
[difftool]
    prompt = true
[difftool "vsdiffmerge"]
    cmd = $LOCAL $REMOTE /t
    keepbackup = false
    trustexistcode = true
    path = C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe
[merge]
    tool = vsdiffmerge
[mergetool]
    prompt = false
[mergetool "vsdiffmerge"]
    cmd = $REMOTE $LOCAL $BASE $MERGED /m
    keepbackup = false
    trustexitcode = true
    path = C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe