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

如何使用Visual Studio代码作为Git MergeTool的默认编辑器,git,visual-studio,visual-studio-code,git-merge,mergetool,Git,Visual Studio,Visual Studio Code,Git Merge,Mergetool,今天我尝试在Windows命令提示符下使用git mergetool,并意识到默认情况下使用Vim,这很酷,但我更喜欢VS代码 如何让Visual Studio代码作为处理Git合并冲突的GUI(甚至作为一个差异化工具)发挥作用?因为更好的合并被集成到Visual Studio代码的核心中 将它们连接在一起的方法是修改.gitconfig,您有两个选项 要使用命令行条目执行此操作,请输入以下各项:(注意:在Windows Git Bash、macOS和Linux上用'替换”,如Iztok Del

今天我尝试在Windows命令提示符下使用
git mergetool
,并意识到默认情况下使用Vim,这很酷,但我更喜欢VS代码

如何让Visual Studio代码作为处理Git合并冲突的GUI(甚至作为一个差异化工具)发挥作用?

因为更好的合并被集成到Visual Studio代码的核心中

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

  • 要使用命令行条目执行此操作,请输入以下各项:(注意:在Windows Git Bash、macOS和Linux上用
    '
    替换
    ,如Iztok Delfin和e4rache所述)

  • git config--global merge.tool vscode
  • git config--global mergetool.vscode.cmd“code--wait$MERGED”
  • git config——全局差异工具vscode
  • git config--global difftool.vscode.cmd“code--wait--diff$LOCAL$REMOTE”
  • 为此,请在
    .gitconfig
    中粘贴一些行

    • 从命令行运行git config--global core.editor“code--wait”
    • 在这里,您可以输入命令
      git config--global-e
      。您需要将代码粘贴到下面的“额外块”中

  • 现在,在您的Git目录中运行冲突运行
    Git mergetool
    ,tada,您有Visual Studio代码帮助您处理合并冲突!(只需确保在关闭Visual Studio代码之前保存文件)

    有关从命令行启动
    code
    的详细信息,请查看


    有关git mergetool的更多信息,请查看。

    我必须用简单引号替换双引号:

      git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'
    
    为了使其正常工作(使用双引号,$LOCAL和$REMOTE将替换为它们的值)


    如果您使用的是for Windows而不是Windows命令提示符,则需要此选项。

    使用本手册,您可以找到一个有趣的参数:

    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.
    

    类似的问题

    如果有人想在Visual Studio中解决它,另一个选项是通过Visual Studio执行:团队资源管理器->单击主页图标=>设置按钮=>展开Git部分=>单击全局设置

    在的顶部,您应该通过向命令行添加-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                                                    
    

    这种更好的合并的集成是否允许您接受并选择合并的部分?或者您仍然需要手动删除冲突的额外注释,如
    >develope
    ?上面有一行哦,我现在在您的打印屏幕上看到它,非常整洁。非常感谢您的解释和方法。我很乐意在n上使用它下一次冲突阻碍了我:)我得到了错误
    未知工具:vscode
    …我很确定要从命令行调用vscode你必须使用
    code
    而不是
    vscode
    。同样,这对我不起作用。它只会弹出打开vscode,并且不会为我带来任何文件。我只是在Windows上用Comman做的d提示。也许您正在使用不同的内容?如果是,我建议添加您正在使用的环境,以便具有相同环境的其他人知道他们需要进行此更改。@e4rache和@Iztok Delfin您在此处列出的内容很有帮助,但您无意中回答了这个问题,因为它实际上是一个注释。我相信您不会忘记n陷入麻烦,因为你没有50分,所以不允许你发表评论,这是一种网站工作流程问题,可能需要研究。无论如何,感谢你的贡献,我在上面的回答中添加了你的提示。感谢你帮助那些后来使用Git Bash的人。
    :^)
    @eric-d-johnson我完全是想告诉你请发表评论而不是回复。(对不起,我是这个网站的新手)顺便说一句,我在linux上使用的是bash。有没有办法将这个回复转换成评论?@e4rache我不知道如何将它变成评论,但也许版主会看到这一点并给我们一些提示(提示,提示)。如果你得到了50分,你可以对接受的答案发表评论,并删除这一点,因此,一旦你成为一名得分颇多的摇滚明星,你就可以回到这里,做任何让你高兴的家务活,并带回美好的回忆。@Mohamedgonemi反馈很好。我更新了macO顶部的解释S和Linux现在要记住使用单引号(
    S).Visual Studio与Visual Studio代码不同。类似的设置的完成方式完全不同。有关详细信息,请参阅differences@jwd630我知道VS代码不同于VS。我在VS中遇到了这个问题,但找不到解决方案,所以我想最好是发布它,以防有人遇到这个问题。不需要关闭-v注意。这是对不同产品的完全不同问题的回答。正确使用完全:windows Medical player与vs代码完全不同。
    git difftool -x "code --wait --diff" 
    
    [merge]
            tool = vscode
    [mergetool "vscode"]
            cmd = code -n --wait $MERGED
    [diff]
            tool = vscode
    [difftool "vscode"]
            cmd = code -n --wait --diff $LOCAL $REMOTE