Sourcetree 不启动 Beyond compare 外部合并工具

Sourcetree does not launch Beyond compare external merge tool

突然,当我尝试从 Sourcetree 启动 "External merge tool" 时,该工具没有出现。我突然说,因为我上次尝试时它起作用了。对话永远存在:

最终我发现这个过程与视觉合并有关(不知道如何从 windows 任务管理器复制命令行):

顺便说一句,当我按下中止时,这个过程并没有消失,所以可能有人没有做功课。实际上,如果这个命令行没有六个相同的进程,我可能不会注意到它。

这些是我的设置:

我该如何解决这个问题?我需要合并项目,但我不知道该怎么做...

我发现当要合并的文件之一被删除时会发生这种情况。在那种情况下,git 打印出 sourcetree 无法处理的命令行提示。 git 进程然后永远挂起。

处理此问题的最佳方法是终止挂起的 git 进程,然后使用 mine/use 他们的手动选择。

如果无法启动Sourcetree外部合并工具,可以使用这个:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

除了 Tomáš 的回答之外,您还可以 运行 在 windows 中的命令提示符中执行以下命令,以便能够回答 git-mergetool 询问的问题的文件(或什至两个)被删除。

使用您自己的 CONFLICTED_FILE_PATH,您可能需要使用不同的路径指向您的 git-mergetool:

sh "c:\Program Files\Git\mingw64\libexec\git-core\git-mergetool" -y --tool=sourcetree -- CONFLICTED_FILE_PATH

我的问题是我选择了工具本身而不是工具的路径。这似乎是强制性的:

您还可以在“.gitconfig”文件(位于用户目录中)中看到:

之前

[difftool "sourcetree"]
    cmd = '' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
    cmd = '' \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"

之后

[difftool "sourcetree"]
    cmd = 'C:/Program Files/P4Merge/p4merge.exe' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
    cmd = 'C:/Program Files/P4Merge/p4merge.exe' \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"

我的问题是我仍然将合并工具列为系统默认值。将该配置也更改为 DiffMerge 似乎已经解决了它:

就我而言,这是由于无法找到 .gitconfig 文件造成的。这是一个问题,因为 .gitconfig 文件是存储差异和合并设置的地方。

这是因为它使用%HOMEDRIVE%%HOMEPATH%来定位它(通常是C:\Users\%USERNAME%)。就我而言,这是在一台工作机器上,它们被设置为 P:\.

离开办公室时,我的 P: 驱动器不可用,因此无法找到我的 .gitconfig 文件,因为 P: 不存在。在我们公司的 IT 支持团队能够为我提供解决方案之前,我通过将 \localhost\C$\Users\%USERNAME% 安装为我的 P: 驱动器来解决这个问题,因为我无法更改 %HOMEDRIVE%%HOMEPATH% 的值我自己。

(如果 Sourcetree 真的给出了关于此的错误消息,而不是默默地失败,那么诊断起来会容易得多)

See the following Atlassian Knowledge base article for more info.