Как использовать код Visual Studio в качестве редактора по умолчанию для Git MergeTool
Сегодня я пытался использовать git mergetool
в командной строке Windows и понял, что по умолчанию используется VIM, что здорово, но я бы предпочел VSCode.
Как я могу использовать функцию кода Visual Studio в качестве моего графического интерфейса для обработки конфликтов слияния (или даже в качестве инструмента различий) для Git?
2 ответа
Начиная с VSCode 1.13 Better Merge был интегрирован в ядро VSCode.
Способ связать их вместе - это изменить .gitconfig
и у вас есть два варианта.
Чтобы сделать это с записями командной строки, введите каждый из них: (Примечание: заменить
"
с'
на Windows Git Bash, как выяснили Изток Дельфин и e4rache)git config --global merge.tool vscode
git config --global mergetool.vscode.cmd "code --wait $MERGED"
git config --global diff.tool vscode
git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
Чтобы сделать это, вставив некоторую строку в
.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