Как использовать код Visual Studio в качестве редактора по умолчанию для Git MergeTool

Сегодня я пытался использовать git mergetool в командной строке Windows и понял, что по умолчанию используется VIM, что здорово, но я бы предпочел VSCode.

Как я могу использовать функцию кода Visual Studio в качестве моего графического интерфейса для обработки конфликтов слияния (или даже в качестве инструмента различий) для Git?

2 ответа

Решение

Начиная с VSCode 1.13 Better Merge был интегрирован в ядро ​​VSCode.

Способ связать их вместе - это изменить .gitconfig и у вас есть два варианта.

  1. Чтобы сделать это с записями командной строки, введите каждый из них: (Примечание: заменить " с ' на Windows Git Bash, как выяснили Изток Дельфин и e4rache)

    1. git config --global merge.tool vscode
    2. git config --global mergetool.vscode.cmd "code --wait $MERGED"
    3. git config --global diff.tool vscode
    4. git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
  2. Чтобы сделать это, вставив некоторую строку в .gitconfig с кодом VS

    • Бежать git config --global core.editor "code --wait" из командной строки.
    • Отсюда вы можете ввести команду git config --global -e, Вы захотите вставить код в "Дополнительный блок" ниже.

      [user]
          name = EricDJohnson
          email = cool-email@neat.org
      [gui]
          recentrepo = E:/src/gitlab/App-Custom/Some-App
      # Comment: You just added this via 'git config --global core.editor "code --wait"'
      [code]
          editor = code --wait
      # Comment: Start of "Extra Block"
      # Comment: This is to unlock VSCode as your git diff and git merge tool    
      [merge]
          tool = vscode
      [mergetool "vscode"]
          cmd = code --wait $MERGED
      [diff]
          tool = vscode
      [difftool "vscode"]
          cmd = code --wait --diff $LOCAL $REMOTE
      # Comment: End of "Extra Block"
      

Теперь из с в вашей директории git с конфликтом запустите git mergetool и, тада, у вас есть VSCode, помогающий вам справиться с конфликтом слияния! (Просто сохраните ваш файл перед закрытием VSCode).

Принимать входящие изменения кто-нибудь

Для дальнейшего чтения по запуску code из командной строки посмотрите в этих документах.

Для получения дополнительной информации в git mergetool проверить эти документы.

Мне пришлось заменить двойные кавычки на простые:

  git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'

чтобы он работал правильно.
(с двойными кавычками $LOCAL и $REMOTE заменяются их значениями)

Это необходимо, если вы используете Git Bash для Windows вместо командной строки Windows.

В дополнение к отличному существующему ответу вы должны открыть VS Code в новом окне, добавив-n в командную строку.

Так что ваши git config --global --edit выглядит примерно так.

[merge]
        tool = vscode
[mergetool "vscode"]
        cmd = code -n --wait $MERGED
[diff]
        tool = vscode
[difftool "vscode"]
        cmd = code -n --wait --diff $LOCAL $REMOTE                                                    

Используя руководство, вы можете найти интересный аргумент:

git difftool --help 
-x <command>, --extcmd=<command>
       Specify a custom command for viewing diffs.  git-difftool ignores the configured defaults and runs $command $LOCAL $REMOTE when this option is specified.
       Additionally, $BASE is set in the environment.

Имея эту информацию, вы можете легко использовать следующую команду, не затрагивая конфигурацию git:

git difftool -x "code --wait --diff" 

Аналогичный вопрос здесь

В случае, если кто-то хочет решить это в Visual Studio, другой вариант будет делать это через Visual Studio: Team Explorer -> щелкните значок Home => кнопку настроек => разверните раздел Git => нажмите Global Settings

Другие вопросы по тегам