13

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

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

  1. 让 SourceTree 接受 p4Merge 作为它的合并/差异工具,并且
  2. 能够从 SourceTree 实际调用 p4Merge 来解决冲突。

到目前为止,我唯一成功的就是让 P4Merge 显示 SourceTree 中的差异。因此Actions/External Diff菜单项有效,但Actions/Resolve Conflicts/Launch External Merge Tool菜单项无效(灰显)。

在此处输入图像描述

我在 SourceTree 的Tools/Options/Diff选项卡中为 Diff 工具和 Merge 工具选择了 P4Merge。我不能在两个命令行框中放任何东西(即使我知道该放什么),因为它们也是灰色的。

选项/差异对话框的图片

我该如何进行这项工作?

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

4

2 回答 2

4

我认为您对P4Merge没有问题。你的问题是

Actions/Resolve Conflicts/Launch External Merge Tool 菜单项没有(它是灰色的)

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

您可以轻松检查:运行命令git mergetool master 。-d并查看输出。我想输出将是No files need merging

如果您在当前分支 sourceTree Actions/Resolve Conflicts中为我启用了未解决的冲突:在此处输入图像描述

如果您对P4Merge和其他合并工具 sourceTree 工作正常有问题,请编辑一个问题。

于 2016-08-10T09:41:14.197 回答
4

我有 SourceTree 版本 1.5.2.0,我配置了外部合并工具,如屏幕截图所示。P4Merge 安装在 C:\Program Files\Perforce 中,并且不在Path. 我没有在 .gitconfig 中设置任何关于 diff/merge 工具的特定值(我意识到这有点“适用于我的机器答案”,但确实如此简单)。

这是我配置外部合并工具的方式

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

  1. 变基开发分支
  2. 创建新功能分支
  3. 开发一个功能,提交(通常是多个)
  4. 如果自分支完成后有很多更改要开发,我们可以将开发合并到我们的功能分支以解决任何潜在的冲突并确保功能仍然有效
  5. 合并到开发分支,然后推送 - 我们的 CI 配置为在将新更改推送到开发分支时触发部署到测试环境
  6. 如果一切顺利,我们将开发分支合并到主分支,这将触发部署到生产环境

要重新开发: 在此处输入图像描述

要从开发中创建新分支: 在此处输入图像描述

将开发合并到功能分支:

在此处输入图像描述

以下是 SourceTree 如何显示合并后存在冲突: 在此处输入图像描述

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

  1. 从https://1drv.ms/u/s!Ahrx2cBEbNLOy1xsUNuZJrUe80Ox下载并在本地解压缩一个带有两个分支的小型存储库
  2. 通过执行以下命令将此存储库添加到 SourceTree:文件 - 克隆/新建... - 添加工作副本 - [选择文件夹 'git-config']
  3. 右键单击名称为“origin/version-2”的分支并选择“合并”
  4. 您应该会看到有关合并冲突的警告,然后右键单击 file.txt 后,应该会出现以下内容:

在此处输入图像描述

于 2016-08-09T19:27:03.873 回答