如何使用Visual Studio代码作为Git MergeTool的默认编辑器

时间:2017-06-14 16:07:40

标签: git cmd visual-studio-code git-merge mergetool

今天我尝试在Windows命令提示符上使用git mergetool,并意识到默认使用 VIM ,这很酷,但我更喜欢 VSCode

如何将 Visual Studio代码功能作为我的GUI来处理Git的合并冲突(甚至作为差异化工具)?

4 个答案:

答案 0 :(得分:151)

VSCode 1.13开始,Better Merge被整合到VSCode的核心中。

将它们连接在一起的方法是修改您的.gitconfig,并且您有两个选项

  1. 要使用命令行条目执行此操作,请输入以下各项:(注意:在Izitok Delfin和e4rache澄清的Windows Git Bash上用"替换' < / em>的

    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 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"
      
  3. 现在,在你的git目录中运行冲突git mergetool和tada,你有VSCode帮助你处理合并冲突! (只需确保在关闭VSCode之前保存文件)。

    Accept Incoming Change anyone?

    有关从命令行启动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