C# 如何将可视化冲突解决(P4Merge)集成到SourceTree中

C# 如何将可视化冲突解决(P4Merge)集成到SourceTree中,c#,git,visual-studio-2015,sourcetree,p4merge,C#,Git,Visual Studio 2015,Sourcetree,P4merge,很长一段时间以来,我一直被SourceTree缺乏可用的冲突解决方案所困扰 应该有一个将p4Merge或其他一些diff/merge工具集成到SourceTree中的过程。目前,p4Merge是我选择的工具;现在我只需要想办法 获取SourceTree以接受p4Merge作为其合并/差异工具,以及 能够从SourceTree实际调用p4Merge来解决冲突 到目前为止,我唯一成功的一件事就是让P4Merge从SourceTree中显示一个diff。因此,操作/External Diff菜单项起作

很长一段时间以来,我一直被SourceTree缺乏可用的冲突解决方案所困扰

应该有一个将p4Merge或其他一些diff/merge工具集成到SourceTree中的过程。目前,p4Merge是我选择的工具;现在我只需要想办法

  • 获取SourceTree以接受p4Merge作为其合并/差异工具,以及
  • 能够从SourceTree实际调用p4Merge来解决冲突
  • 到目前为止,我唯一成功的一件事就是让P4Merge从SourceTree中显示一个diff。因此,操作/External Diff菜单项起作用,但操作/Resolve Conflicts/Launch External Merge Tool菜单项不起作用(变灰)

    我已经在SourceTree的工具/选项/Diff选项卡中为Diff工具和合并工具选择了P4Merge。我不能在这两个命令行框中放置任何内容(即使我知道要在其中放置什么),因为它们也会变灰

    我该怎么做


    SourceTree的版本是1.9.5.0,应该是本文撰写时的最新版本。P4Merge似乎没有“帮助/关于”对话框,但它是最近安装的(在过去3个月内)。

    我有SourceTree 1.5.2.0版,并且配置了外部合并工具,如屏幕截图所示。P4Merge安装在C:\Program Files\Performance中,不在
    路径上。我没有在.gitconfig中设置任何关于diff/merge工具的特定值(我意识到这是一种“在我的机器上工作”,但它确实很简单)

    对于工作流,不同的团队可能有不同的方法。我们团队中每项功能工作(通常由一名开发人员完成)的工作如下(如何在SourceTree中执行每个操作的屏幕截图见本文末尾):

  • 再基地发展处
  • 创建新要素分支
  • 处理功能,进行提交(通常是多次提交)
  • 如果自分支完成后有许多更改需要开发,我们可以将develop合并到我们的feature分支,以解决任何潜在的冲突,并确保feature仍然有效
  • 合并到开发分支,然后推送-我们的CI配置为在将新更改推送到开发分支时触发到测试环境的部署
  • 若一切正常,我们将开发分支合并到主分支,这将触发到生产环境的部署
  • 要重新确定基础,请开发:

    要从develop中创建新分支,请执行以下操作:

    要将“开发”合并到“要素”分支,请执行以下操作:

    以下是SourceTree显示合并后存在冲突的方式:

    更新:为了验证SourceTree是否配置正确,我建议您执行以下操作:

  • 从本地下载并解压缩一个小型存储库,其中包含两个分支
  • 通过执行:File-Clone/New…-添加工作副本-[选择文件夹'git config']
  • 右键单击名为“origin/version-2”的分支并选择“merge”
  • 您应该会看到关于合并冲突的警告,然后右键单击file.txt后,将显示以下内容:

  • 我想你对P4Merge没有问题。你的问题是

    操作/解决冲突/启动外部合并工具菜单项不存在(变灰)

    我认为sourceTree有这种行为,因为当前分支中没有冲突。

    您可以简单地检查以下内容: 运行命令git mergetool master-d并查看输出。我想输出将是没有文件需要合并

    如果您在当前分支sourceTree中有未解决的冲突,请为我启用操作/解决冲突:


    如果使用P4Merge和其他合并工具sourceTree解决问题,请编辑一个问题。

    。。。除了原来的问题。这包括“推前拉”和“在SourceTree中单击何处以获取要启用的“解决冲突”菜单项。这些设置不起作用。“启动外部合并工具”“菜单选项仍为灰色。已看到您的编辑。”。看来我终究要成为一名Git专家了。为一个愚蠢的问题提前道歉:在合并后,当前分支中确实存在冲突,对吗?如果是,您是否可以显示当您在屏幕上的“工作副本更改”部分中单击文件时出现的关联菜单的屏幕截图?它看起来总是像我在问题中已经提供的屏幕截图。我还没有看到“解决冲突”上下文菜单项启用。通过查看您的屏幕截图,我得到一个印象,您的合并成功,没有冲突。我将在我的答案中添加一个图像,以显示当存在合并冲突时UI的外观(您将看到分支将变为灰色,而不是在图片中可见的蓝色)。我的一个普遍假设是,我不必使用命令行来执行此操作。毕竟,这就是使用SourceTree.Yes的全部意义所在。命令
    git mergetool master-d
    只是一个测试。运行一次并查看输出。如果输出为
    无需合并文件
    ,则表示SourceTree工作正常。你没有需要解决的冲突。