跳到主要内容

合并与冲突解决

合并将不同分支上的工作组合,是分支流程的常见环节。

合并两个分支​

PlayCanvas 选择两个分支的检查点,计算相对最近共同祖先的变化,组合结果,必要时人工解决冲突,最后创建新检查点。

实际合并的是检查点,而非分支当前未记录的状态。因此最新检查点之后可能还有修改。目标分支默认自动创建检查点,避免丢失。

合并示例​

合并检查点 Y 和 Z 不包含在结果 C 中,且会丢失。

自动创建检查点 默认在目标分支创建新检查点,因此 Y 被包含。

保留源修改 需要包含 Z 时,合并前先在源分支创建检查点。

开始合并​

开始合并

先切换到目标分支,再选择源分支,在菜单点击 Merge into current branch。

合并对话框

开始前可配置:

源分支 Merge from:

  • Create checkpoint first:先创建检查点,将尚未记录的修改包含进来。
  • Close branch after merging:完成后关闭源分支,适合已完成功能,保持列表整洁。

目标分支 Merge to:

  • Create checkpoint first:默认启用,确保目标未记录修改包含在合并中。取消会丢弃未记录修改,建议保留。

自动合并​

PlayCanvas 尝试自动组合不冲突的修改,很多合并无需人工处理。完成后,编辑器重新加载当前分支的合并结果。

解决冲突​

双方修改同一实体位置等情况无法自动选择,需要人工决定。

存在冲突时显示冲突管理器,全部解决才能完成。

冲突管理器​

冲突管理器

左侧列出冲突资源,右侧比较原始 Base 和双方版本。为各冲突属性选择保留版本,全部处理后点击 Complete Merge,完成并创建检查点。

冲突已解决

合并期间当前分支锁定,其他成员不能编辑,避免结果覆盖新修改。其他人的合并阻塞所需分支时,可以在编辑器中强制结束。