今天我尝试在Windows命令提示符上使用git mergetool
,并意识到默认使用 VIM ,这很酷,但我更喜欢 VSCode 。
如何将 Visual Studio代码功能作为我的GUI来处理Git的合并冲突(甚至作为差异化工具)?
答案 0 :(得分:151)
从VSCode 1.13开始,Better Merge被整合到VSCode的核心中。
将它们连接在一起的方法是修改您的.gitconfig
,并且您有两个选项。
要使用命令行条目执行此操作,请输入以下各项:(注意:在Izitok Delfin和e4rache澄清的Windows Git Bash上用"
替换'
< / em>的
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
with VS Code中的某些行来执行此操作。
git config --global core.editor "code --wait"
。 从此处输入命令git config --global -e
。您需要粘贴&#34; Extra Block&#34;中的代码。下方。
[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"'
[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"
现在,在你的git目录中运行冲突git mergetool
和tada,你有VSCode帮助你处理合并冲突! (只需确保在关闭VSCode之前保存文件)。
有关从命令行启动code
的进一步阅读,请查看这些docs。
有关git mergetool
的更多信息,请查看这些docs。
答案 1 :(得分:9)
我必须用简单的引号替换双引号:
git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'
使其正常工作。
(用双引号将$ LOCAL和$ REMOTE替换为其值)
如果您使用的是Windows的Git Bash而不是Windows命令提示符,则需要这样做。
答案 2 :(得分:8)
在excellent existing answer顶部,应该通过在命令行中添加-n
在新窗口中打开VS Code。
所以您的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
答案 3 :(得分:0)
使用手册,您会发现一个有趣的论点:
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"
类似的问题here