Sourcetree无法启动Beyond Compare外部合并工具

9
突然间,当我尝试从Sourcetree启动“外部合并工具”时,该工具未出现。我之所以说是突然,是因为上一次我尝试时它可以正常工作。对话框永远保持不变: image description 最终,我找到了这个与视觉合并相关的进程(不知道如何从Windows任务管理器复制命令行): image description 顺便说一下,即使我按中止键,这个进程也不会消失,所以可能有人没做好他们的工作。实际上,如果没有六个相同命令行的进程,我可能根本没有注意到它。
这些是我的设置: image description 我该如何解决这个问题?我需要合并项目,但我不知道该怎么办...
6个回答

12

我发现这种情况发生在要合并的文件中有一个已被删除的情况下。这时,git 会打印出命令行提示,而Sourcetree无法处理。Git进程最终会永久挂起。

最好的处理方法是终止该挂起的Git进程,然后手动选择使用自己的代码或使用别人的代码。


3
警告!使用“mine”或“theirs”选项将不会执行合并操作!它将完全用其中一个版本替换文件。您可以在编辑器中手动编辑文件(虽然没有合并工具那么方便,但也不太难),然后将文件标记为已解决。 - CJ Dennis
2
@CJDennis 感谢您的警告,但请注意我所说的情况是当文件被删除时 - 在这种情况下没有什么可以合并的,你只能保留文件或者删除它。 - Tomáš Zato
这对于你的特定情况来说是可以的,但很多人会来到这里,因为他们想要手动合并两个文件。显然,当一个文件被删除时,无法进行合并(例如在Beyond Compare中)。我的问题是两个文件都存在,但Sourcetree仍然无法启动Beyond Compare。删除其中一个文件对我没有帮助。作为具体建议,它是好的,但作为一般建议,它可能非常破坏性。 - CJ Dennis
非常感谢您发布这个内容!多年来,我遇到过几次这种情况,并想知道为什么会出现随机情况。 - RichardWill.Net

3
对我来说问题在于合并工具仍然被列为系统默认设置。将配置更改为DiffMerge似乎解决了这个问题:DiffMerge

0
在我的情况下问题是我选择了工具本身而不是工具路径。这似乎是必需的:
enter image description here

您也可以在您的‘.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\"

0
除了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

0
如果您无法启动Sourcetree外部合并工具,可以使用以下方法:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

0
在我的情况下,这是由于无法找到.gitconfig文件引起的。这是一个问题,因为.gitconfig文件是存储差异和合并设置的地方。
这是因为它使用%HOMEDRIVE%%HOMEPATH%来定位它(通常是C:\Users\%USERNAME%)。在我的情况下,这是在一台工作机器上,它们被设置为P:\
当我离开办公室时,我的P:驱动器不可用,因此它无法找到我的.gitconfig文件,因为P:不存在。在我们公司的IT支持团队能够为我提供解决方案之前,我通过将\\localhost\C$\Users\%USERNAME%挂载为我的P:驱动器来解决这个问题,因为我无法自己更改%HOMEDRIVE%%HOMEPATH%的值。
(如果Sourcetree实际上给出了关于此的错误消息,而不是默默失败,那么诊断将容易得多)

请参阅以下Atlassian知识库文章以获取更多信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接