合并冲突,“关系问题”
合并操作会合并两个分支的内容,这两个分支有共同的祖先,但发生了不同的变化。有针对性的分支合并主要在 Git 分支 使用 合并 命令。合并操作也包含在拉动操作中。
合并操作期间会检测到源分支和目标分支的不同状态,这称为冲突。合并导致的未经许可的项目结构被确定为 “关系问题”。视设置选项而定, CODESYS Git 尽可能尝试自动解决这些冲突,或者将此解决方案留给用户。
冲突解决后, CODESYS Git 总是试图 重新同步 (从项目存储中重新读取项目)。这是通过关闭在中打开的项目来完成的 CODESYS 然后从存储中创建一个新的。
CODESYS Git 区分了合并时可能发生的两种需要解决的问题:
冲突: 纯 Git 冲突:一个或多个对象收到了竞争性更改。它可以是对象内容的不同变化。
基本的 “合并冲突策略” 设定在 Git 合并选项 在 Git 分支 观点。根据此设置,要么尽可能运行自动冲突解决方案,朝特定方向采取基本的接受操作,要么手动处理冲突。
如果是手动解决冲突,则冲突对象将按原样显示在 状态和阶段 观点。双击冲突对象会打开比较视图。在比较视图中,源自两个分支的更改并排显示。您可以通过明确接受来清除内容中的差异。如果它们纯粹是命名空间冲突,则需要通过在项目树中重命名或删除来解决它们。单击 “应用” 以解决冲突。之后,先前冲突的对象将自动移至 “暂存更改” 区域。
“关系问题”: 相互竞争的变更导致了无效的项目结构 CODESYS,这无法由 Git 合并函数处理。可能已使用外部工具在文件系统外部进行了更改。或者从不同的分支同时创建了相同类型和/或相同名称的对象,然后该对象位于同一个命名空间中 CODESYS 项目。在 a 中不允许这样 CODESYS 项目。或者发生了无效的父/子对象关系。另一种可能性是,关系问题源于先前的合并,为了能够暂时继续运作,故意忽略了这些
例如,在一台设备下方插入两个警报配置的情况,这是不允许的。
用户必须使用可用的方法(将一个对象合并为另一个对象、删除、重命名或移动)手动更正项目结构,才能恢复一致的项目。
重要
从版本 1.2.0.0 开始,还可以通过现有关系问题进一步处理项目(忽略)。注意:在这种情况下,对项目的更改将在以后的重新同步中丢弃。原因:重新同步操作从忽略关系问题之前保存的文件系统加载项目版本
在 状态和阶段 视图,作为用户,您可以按如下方式检查和编辑冲突:
Helpful commands are available in the context menu of a conflicting object. The current selection depends on the situation:
显示所有受影响的对象 / 显示这个对象: 对象或对象将在中突出显示 设备 项目视图。
用他们的解决办法:应用源分支的状态。
使用我们的解决方法:应用目标分支的状态。
自动解决: CODESYS Git 试图巩固变更本身。
标记为已解决:项目中当前存在的对象已应用并被视为冲突的解决方案。相应的物体已被暂存。
忽略关系问题:在下次重新同步之前,关系问题将被忽略。当你只希望能够继续处理项目并且冲突对此无关紧要时,这可能很有用。
双击冲突对象将打开源分支和目标分支内容的比较视图。如果是竞争内容,则可以根据需要将内容从一个分支应用到另一个分支。
在 消息 视图中,您可以双击冲突的错误消息以打开受影响的对象。