How to use Visual Studio Code as the default editor for Git MergeTool
As of Visual Studio Code 1.13 Better Merge was integrated into the core of Visual Studio Code.
The way to wire them together is to modify your .gitconfig
and you have two options.
To do this with command line entries, enter each of these: (Note: replace
"
with'
on Windows Git Bash, macOS and Linux as clarified by Iztok Delfin and 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"
To do this by pasting some line in the
.gitconfig
with Visual Studio Code.- Run
git config --global core.editor "code --wait"
from the command line. From here you can enter the command
git config --global -e
. You will want to paste in the code in the "Extra Block" below.[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 Visual Studio Code 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"
- Run
Now from within your Git directory with a conflict run git mergetool
and, tada, you have Visual Studio Code helping you handle the merge conflict! (Just make sure to save your file before closing Visual Studio Code.)
For further reading on launching code
from the command line, look in this documentation.
For more information in git mergetool
check out this documentation.
I had to replace the double quotes with simple quotes:
git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'
for it to work properly (with double quotes, $LOCAL and $REMOTE are replaced by their values).
This is needed if you are using Git Bash for Windows instead of Windows Command Prompt.
On top of the excellent existing answer, you should open VS Code in a new window by adding -n
to the command line.
So your git config --global --edit
looks something like this.
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code -n --wait $MERGED
[diff]
tool = vscode
[difftool "vscode"]
cmd = code -n --wait --diff $LOCAL $REMOTE