外部合并/差异工具

合并工具

当您与其他人一起处理一个项目时,总是存在冲突的可能性,因为多个人编辑同一个文件,并且大多数源代码控制系统可以很好地尝试合并任何冲突的文件,但是当在同一位置有更改时,它需要一些帮助才能知道该做什么 -- 这就是合并工具发挥作用的地方,它会向您显示更改,并让您做出决定。

由于每个合并工具都不同,因此有四个宏可用于帮助为其指定文件,您可以通过单击标记为选择合并工具的按钮,在冲突窗口中设置这些文件

Source Control Conflict Window

当您单击该按钮时,将在 Git 插件上打开首选项窗口:

Source Control Choose Merge Tool在此处提供所选合并工具的路径,然后提供在决定要执行什么操作时使用的合并工具选项宏(或多个宏),并提供以下选项:

作为设置的帮助,当您提供某些合并工具的路径时,根据所选的工具,GameMaker 将填写一些要开始使用的默认设置:

请注意,如果您没有(或不想使用)合并工具,则可以在 IDE 中打开脚本并尝试从那里修复它。

因此,回到我们的示例冲突,如关于冲突的部分所述...。我们已从 master 获取,其中一个文件冲突。这将打开源代码控制冲突窗口,您可以在其中单击冲突的脚本,然后单击合并,因为您已经配置了合并工具。现在,单击合并将打开工具,您可以在其中处理冲突,然后使用提供的宏进行所需的更改。完成并关闭合并工具后,GameMaker IDE 将显示以下确认窗口:

Source Control Merge Confirm只需对此提示回答"是",因为您刚刚使用合并工具自己完成了这项工作,然后您需要提交此更改以表示合并操作的结束(源代码管理>提交更改)。提交窗口现在将显示合并正在进行,并显示一些未转移的文件:

Source Control Merge In Progress这些未暂存的文件是我们的脚本文件,添加了 .base.ours.theirs。我们可以安全地删除所有这些内容,因此请单击顶部的 LMB Icon,然后单击底部的 Shift Icon+LMB Icon 将其全部选中。接下来,我们在所选文件上单击鼠标右键并选择 删除路径 以删除它们。还为我们预先填充了一条提交消息,声明这是一个合并,并且存在冲突 (我们可以根据需要添加或编辑它)。

我们现在可以单击提交

由于您可能会遇到其他文件的问题,这意味着您在使用远程或共享仓库时的工作流程应如下所示:

Make Changes > Save > Commit > Pull > Merge > Push

比较工具

您还应该设置一个比较工具,以便在提交到仓库时使用。这是从首选项设置的,与合并工具的设置相同:

Source Control Choose Diff Tool 比较工具的配置方式与合并工具大致相同,但只使用了 ${scm_base}${scm_theirs} 选项-在本例中,${scm_base} 表示未修改的文件,而 ${scm_theirs} 表示文件的当前状态。工具选项应该预先填充 MeldKDiff 3TortoiseMerge 的默认选项,就像它们用于合并工具一样。请注意,GameMaker 不支持输出单个文件的不同补丁,因此没有默认的 Notepad++

要使用比较工具查看当前版本和以前版本之间的更改,只需打开提交窗口,然后双击文件。如果该工具已正确设置,它将被启动,您将能够看到文件之间的更改。