【问题标题】:Sourcetree does not launch Beyond compare external merge toolSourcetree 不启动 Beyond compare 外部合并工具
【发布时间】:2016-11-10 20:37:36
【问题描述】:

突然,当我尝试从 Sourcetree 启动“外部合并工具”时,该工具没有出现。我突然说,因为我上次尝试过它有效。对话框永远存在:

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

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

这些是我的设置:

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

【问题讨论】:

    标签: git atlassian-sourcetree beyondcompare


    【解决方案1】:

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

    处理这个问题的最佳方法是杀死挂起的 git 进程,然后使用 use mine/use theirs 手动做出选择。

    【讨论】:

    • 警告!!!使用“mine”或“theirs”不会执行合并!它将用一个版本或另一个版本完全替换文件。您可以在编辑器中手动编辑文件(不如使用合并工具好,但仍然不太难),然后将文件标记为已解决。
    • @CJDennis 感谢您的警告,但请注意,我说的是文件被删除的情况——在这种情况下,没有什么可以合并的,要么保留文件,要么删除它。跨度>
    • 这对你的具体情况很好,但是很多人会来这里,因为他们想手动合并两个文件。显然,当一个文件被删除时,不可能合并(例如在 Beyond Compare 中)。我的问题是这两个文件都存在,而且 Sourcetree 仍然无法启动 Beyond Compare。删除我的一个文件对我没有帮助。作为具体建议,它很好,作为一般建议,它可能具有非常大的破坏性。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            就我而言,这是由于无法找到.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.

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-11-05
              • 2020-03-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-08-18
              • 1970-01-01
              相关资源
              最近更新 更多