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

14

最近我一直被SourceTree缺少可用的冲突解决工具所困扰。

据说有一个将p4Merge或其他差异/合并工具集成到SourceTree中的过程。目前,p4Merge是我选择的工具;现在我只需要弄清楚如何:

  1. 使SourceTree接受p4Merge作为其合并/差异工具,并
  2. 能够从SourceTree中调用p4Merge来解决冲突。

到目前为止,我唯一成功的事情就是让P4Merge在SourceTree内显示差异。 因此,操作/外部差异菜单项可以正常工作,但是操作/解决冲突/启动外部合并工具菜单项不行(它处于灰色状态)。

进入图像描述

我已在SourceTree的工具/选项/差异标签中为Diff工具和Merge工具选择了P4Merge。 我无法在两个命令行框中输入任何内容(即使我知道要输入什么),因为它们也处于灰色状态。

Options/Diff 对话框的图片

我该如何让它工作呢?

当前SourceTree版本为1.9.5.0,应该是最新版本。P4Merge似乎没有帮助/关于对话框,但最近已安装(在过去3个月内)。


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Robert Harvey
2个回答

4
我使用的是SourceTree 1.5.2.0版本,并按照截图配置了外部合并工具。P4Merge安装在C:\Program Files\Perforce中,不在Path中。我没有在.gitconfig文件中设置任何关于diff/merge工具的特定值(我知道这有点像“在我的机器上可行”的答案,但事实上就是这么简单)。

here is how I configured external merge tool

关于工作流程,不同的团队可能有不同的方法。我们团队在每个功能工作上(通常只由一名开发人员完成)所做的是以下步骤(如何在SourceTree中执行每个操作的截图在帖子末尾):
  1. 将develop分支rebase
  2. 创建新的feature分支
  3. 在一个feature上工作,进行提交(通常是多次)
  4. 如果自从分支创建以来develop有很多更改,我们可以将develop合并到我们的feature分支中以解决任何潜在的冲突,并确保feature仍然有效
  5. 合并到develop分支,然后推送 - 我们的CI配置为在将新更改推送到develop分支时触发部署到测试环境
  6. 如果一切正常,我们将develop分支合并到master分支,这将触发部署到生产环境
要rebase develop: enter image description here 要从develop创建新分支: enter image description here

将develop合并到feature分支中:

enter image description here

这是SourceTree在合并后显示冲突的方法: enter image description here 更新:为了验证SourceTree是否正确配置,建议您执行以下操作:
  1. https://1drv.ms/u/s!Ahrx2cBEbNLOy1xsUNuZJrUe80Ox下载并本地解压一个包含两个分支的小型存储库
  2. 通过执行以下操作将此存储库添加到SourceTree:文件-克隆/新建...-添加工作副本-[选择文件夹'git-config']
  3. 右键单击名称为“origin/version-2”的分支并选择“合并”
  4. 您应该会看到有关合并冲突的警告,然后右键单击file.txt,应出现以下内容:

enter image description here


这些设置没有起作用。"启动外部合并工具"菜单选项仍然是灰色的。 - Robert Harvey
我已经在我的问题中提供了截图,它总是看起来像那样。我还没有看到“解决冲突”上下文菜单项可用。 - Robert Harvey
似乎这一切只有在您不先提交时才有效。这是真的吗?如果是,那么你怎么知道是否存在冲突呢? - Robert Harvey
我在屏幕截图中展示的仓库状态存在冲突,这是由于尝试将两个分支(version-2合并到master)合并而导致的,但是在创建version-2分支之后,master中的file.txt已经发生了更改。每个分支都成功提交了提交,只有在合并过程中才发现了冲突,并且必须处理它。 - oldbam
@RobertHarvey 我更新了一个答案,并提供了使用一个小测试存储库来检查SourceTree是否已正确配置的说明,您可以从onedrive上下载。 - oldbam
显示剩余6条评论

4
我认为您在使用P4Merge时没有问题。您的问题在于:

操作/解决冲突/启动外部合并工具菜单项不可用(它是灰色的)

我认为sourceTree出现这种行为是因为您的当前分支没有冲突
您可以轻松检查这一点: 运行命令git mergetool master . -d并查看输出。我猜输出将是没有需要合并的文件
如果您的当前分支存在未解决的冲突,对于我来说sourceTree的操作/解决冲突是启用的:enter image description here 如果您遇到了与P4Merge有关的实际问题,并且其他合并工具的sourceTree正常工作,请编辑问题。

我一直的假设是我不必下到命令行来完成这个操作。毕竟,使用SourceTree的整个意义就在于此。 - Robert Harvey
是的。命令 git mergetool master . -d 只是一个测试。运行一次并查看输出。如果输出为 No files need merging,则表示 SourceTree 正常工作。您没有需要解决的冲突。 - Dmitrii Zyrianov

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