冲突

在本节中,我们将研究如何解决克隆本地仓库与主仓库之间的冲突。假设您现在使用的是本地仓库,我们将需要编辑一个文件,然后导致某种冲突,因此打开我们一直使用的测试脚本,并将"Hello World"消息更改为如下所示:

show_debug_message("Hello World, How Are You?");

现在,您应该保存项目并将其提交到本地仓库。现在,由于我们链接到远程主仓库(即使它是我们克隆到同一磁盘的主仓库),我们需要执行推送操作才能将更改发送到主仓库。为此,请转到源代码管理>推送更改,这将在源代码管理输出选项卡中为我们提供状态更新

Source Control Output Panel我们现在需要打开原始项目(而不是克隆的项目),因此浏览到磁盘上保存它的位置-或者只需选中文件菜单中的最近的项目,因为它应该直接位于当前项目下-并将其加载到 GameMaker 中。检查您是否拥有正确项目的一种简单方法是,只需检查您拥有的脚本,如果消息是"Hello World",则您拥有正确的脚本,或者您可以打开查看历史记录窗口并以此方式进行检查。

现在您需要再次编辑该脚本,因此使其读起来如下所示:

show_debug_message("This will cause a conflict.");

可以将其保存到磁盘,并提交更改,但如果您尝试推送这些更改,您将收到以下消息:

Source Control Push Conflict Message有人已经推送了您尚未推送的更改!这意味着您需要拉入仓库并查看问题的确切原因,因此请转到源代码控制>拉出更改。这将显示两个窗口,第一个是有关更改的文件的警告(与前面的操作一样,您希望在此处选择重新加载,而不是保存),另一个是冲突窗口:

Source Control Conflict Window此窗口将在左侧列表中显示冲突的文件,您可以使用鼠标左键LMB Icon 从该列表中选择文件(或使用Control Icon / CMD Icon 或 Shift IconLMB Icon选择多个文件)。您有四个处理冲突文件的选项,可从右侧的按钮访问:

现在,您可以使用按钮来解决冲突,但在此之前,让我们先打开冲突的文件,看看问题到底是什么。如果打开冲突的脚本,它现在将如下所示:

Source Control Conflicted Code这表明"This Will Cause A Conflict"是正确的(这是我们推送到本地仓库的内容)和"Hello World,How Are You?"是从远程仓库 master 中提取的。您现在可以返回到冲突窗口,然后单击使用他们的文件来拉出更改的文件并覆盖当前的头文件。脚本现在将被标记为已更改,您应该在继续之前执行新的提交和推送。

请注意,我们实际上可以在 GameMaker IDE 中修复此问题。如果我们删除第1、2、3和5行,这样我们只剩下 show_debug_message("Hello World, How Are You?") 并保存它,它将清除冲突,因为 Git 将假设您知道您正在对自己的文件做什么。但是,这很容易出错,因此建议安装合并工具,然后配置并使用该工具,而不是手动尝试合并。