如何在SourceTree中使用VS Code作为合并和差异工具?

Hey*_*yJC 22 git atlassian-sourcetree visual-studio-code

这个问题和其他一些人讨论了如何在Mac上运行,但我无法在Windows上找到MS或Atlassian的文档,而无需尝试将其作为全局git设置.(我更喜欢在可能的情况下在IDE中更改内容.)

在SourceTree的"选项"对话框"差异"选项卡中使用"自定义"设置时,有哪些参数用于与VS-Code进行差异和合并?

Hey*_*yJC 40

可能还有其他更好的变化,但经过一些实验后我发现这些工作做得很好......

  • 为"外部差异工具"和"合并工具"选择"自定义"
  • 两种情况下的"Diff Command"是安装VS-Code的路径,例如:

    C:/ Users/username/AppData/Local/Programs/Microsoft VS Code/Code.exe

    C:/ Program Files(x86)/ Microsoft VS Code/Code.exe

  • Diff'ing的命令行参数是:

    --diff - 等待"$ LOCAL""$ REMOTE"

  • 对于合并:

    -n - 等待"$ MERGED"

'-n'标志使VS-Code打开一个新窗口,我更喜欢这个窗口,因为VS-Code打开得这么快,但你可以省略它.处理合并冲突时,必须在完成继续操作后关闭该文件.SourceTree似乎并不一致地删除它创建的中间文件,但您可以轻松地选择,右键单击并从"非暂存文件"部分"删除"它们.

  • VS Code的默认路径现在是`C:\ Users\<用户名>\AppData\Local\Programs\Microsoft VS Code\Code.exe` (2认同)
  • @ObmerkKronen 抱歉,我使用 Sourcetree 的原因是因为我不知道像 git require 这样的三向差异是什么意思。如果有帮助,我只将它与 git repos 一起使用? (2认同)
  • 感谢您的回答,它对我来说效果很好,如果我可以在 vs-code 中设置在冲突之间移动的快捷方式,那么会更有帮助,有任何建议可以做到这一点。 (2认同)

Swa*_*nil 13

您需要在Sourcetree中进行以下配置

\n
    \n
  • 转到Sourcetree \xe2\x86\x92工具\xe2\x86\x92选项\xe2\x86\x92差异

    \n
  • \n
  • 在“外部比较/合并”部分中,为“外部比较工具”“合并工具”选择“自定义”

    \n
  • \n
  • 差异参数 \xe2\x86\x92\n--diff --wait "$LOCAL" "$REMOTE"

    \n
  • \n
  • 合并参数 \xe2\x86\x92-n --wait "$MERGED"

    \n
  • \n
  • 保存配置后,然后转到 Sourcetree 并右键单击有合并冲突的文件解决冲突\xe2\x86\x92启动外部合并工具

    \n
  • \n
\n
\n

注意: DiffMerge命令应指向%LOCALAPPDATA%\\Programs\\Microsoft VS Code\\Code.exe(如果仅为您的用户安装),或C:\\Program Files\\Microsoft VS Code\\Code.exe(如果为所有用户安装)。

\n
\n

Sourcetree 外部差异/合并工具配置

\n

解决源树中冲突的步骤

\n


Rus*_*wen 6

code在 macOS 上,输入“Diff Command”框就足够了。然后使用上面由 HeyHeyJC 指定的参数


Dan*_*ner 5

我可以使用code.cmd脚本按照以下步骤进行设置

  • 将“自定义”设置为Diff和Merge的外部工具
  • 指向code.cmd命令

    C:\ Users \ [用户名] \ AppData \ Local \ Programs \ Microsoft VS Code \ bin \ code.cmd

  • 使用与@HeyHeyJC相同的命令行参数

    区分的命令行参数为:

    --diff --wait“ $ LOCAL”“ $ REMOTE”

    对于合并:

    -n-等待“ $ MERGED”

对我而言,我然后可以同时使用diff和从sourcetree合并。


注意:默认情况下,该 code.cmd 文件包含用于打开CLI指令的命令行arg "%~dp0..\resources\app\out\cli.js"并且每次都打开该命令有点乏味!我删除了此文件,因此我的文件如下所示,现在仅打开了从sourcetree发送的文件。

@echo off
setlocal
set VSCODE_DEV=
set ELECTRON_RUN_AS_NODE=1
call "%~dp0..\Code.exe" %*
endlocal
Run Code Online (Sandbox Code Playgroud)