it-swarm.com.ru

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

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

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

81
Eric D. Johnson

Начиная с VSCode 1.1 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 = [email protected]
      [gui]
          recentrepo = E:/src/gitlab/App-Custom/Some-App
      # Comment: You just added this via 'git config --global core.editor "code --wait"'
      [core]
          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"
      

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

Accept Incoming Change anyone?

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

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

165
Eric D. Johnson

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

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

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

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

11
e4rache