В этом примере показано, как использовать трехстороннее слияние Simulink ® для разрешения конфликтов в моделях Simulink. Можно просматривать и объединять различия модели Simulink в полученном отчете.
Создайте и откройте рабочую копию примера проекта. MATLAB ® копирует файлы в папку примера, чтобы их можно было редактировать.
slcomparisons.examples.simulinkThreeWayMerge;
Building with 'MinGW64 Compiler (C)'. MEX completed successfully.
Пример проекта находится в системе управления версиями Git™. Вы пытаетесь объединить изменения другого пользователя в главной ветви Git в TaskBranch. Эта операция приводит к конфликтам.
Для разрешения конфликтов с помощью инструмента «Трехстороннее слияние моделей» в этом примере показано, как проверить локальный файл (Mine), конфликтующую ревизию (Theirs) и общий предок этих двух файлов (Base).
Другой пользователь обновил подсистему модели пилота, чтобы использовать явный блок усиления для амплитуды входных команд пилота. Он также обновил время остановки моделирования.
Мой: Вы изменили некоторые настройки конфигурации для подсистемы пилотной модели.
Инструмент «Объединение» автоматически объединяет несвязанные различия. Выполните следующие действия, чтобы просмотреть варианты автозапуска, при необходимости отредактировать и решить, как устранить оставшиеся различия. После разрешения конфликтов зафиксируйте разрешенную модель в системе управления версиями.
Поиск конфликтующих файлов в представлении файлов проекта. slproject_f14 в столбце Git отображается красный символ предупреждения, указывающий на конфликт.
1. Чтобы просмотреть подробный отчет о конфликтах, щелкните правой кнопкой мыши slproject_f14 и выберите Просмотр конфликтов.
Инструмент «Трехстороннее объединение» показывает изменения в двух конструкциях Simulink, вызвавшие этот конфликт файлов.

Деревья «Их», «База» и «Шахта» показывают различия между конфликтующей редакцией, редакцией и базовым предком этих файлов.
В дереве назначения отображается файл, в который будут объединены изменения. Это временный файл, который будет скопирован в проект при принятии результата объединения.
2. Проверьте разницу, щелкнув строку в одном из деревьев. Инструмент объединения отображает изменения для каждой модели в редакторе, например в редакторе Simulink Editor или диалоговом окне Параметры конфигурации (Configuration Parameters), справа от окна Трехстороннее объединение (Three-Way Merge).
3. На вкладке Объединить (Merge) в разделе Подсветка (Highlight) выберите модели для отображения с помощью кнопок Верхняя модель (Top Model) или Нижняя модель (Bottom Model).
Инструмент объединения автоматически объединяет большинство несвязанных различий.
4. Проверьте первое изменение в верхней части дерева «Свои», щелкнув строку PilotGain. Этот узел был автоматически объединен, и можно настроить автоматические варианты выбора с помощью кнопок в дереве цели. При необходимости просмотрите другие варианты автоматического объединения.
Существует два типа различий, требующих действий пользователя.
Конфликт: Инструмент слияния не может автоматически устранить эти различия, и вам нужно выбрать нужный дизайн в целевом файле. На панели «Цель» найдите предупреждения в столбце конфликта.
Объединение вручную: некоторые различия должны быть объединены вручную в Simulink или проигнорированы. На панели «Цель» эти элементы отображаются значком карандаша в столбце конфликта.
5. Выберите StickCommand_rad строка. Это различие требует ручного объединения, обозначенного значком карандаша в столбце конфликта.
Устраните разницу в изменении строки в targetFile переименованием линии, подключенной к выходу блока с именем Pilot в редакторе Simulink из StickCommand_rad кому Pilot Output.
После устранения разницы сохраните изменения в редакторе и пометьте их как разрешенные с помощью ручного управления слиянием в столбце Конфликты.
Отчет о слиянии не обновляется для отображения изменений, внесенных в редакторе.
6. Используйте кнопку «Следующая панель инструментов» для просмотра и разрешения изменений до тех пор, пока не возникнет конфликт. Это StopTime был изменен обоими пользователями и конфликтует. Разрешите конфликт с помощью изменения шахты. Нажмите кнопку рядом с StopTime в столбце шахты на панели «Цель».
По умолчанию отчет скрывает все нефункциональные изменения, такие как изменение положения элементов.
7. На вкладке Объединить (Merge) в разделе Фильтр (Filter) включите и выключите фильтры для просмотра различных изменений между этими конструкциями.
8. После устранения всех отфильтрованных и нефильтрованных изменений нажмите кнопку Принять и закрыть. Инструмент объединения закрывает отчет и модели, принимает результат объединения в targetFileи помечает конфликт как разрешенный в средстве управления версиями. Теперь можно зафиксировать изменения в системе управления версиями и продолжить работу.
Система управления версиями в проектах
Настройка внешней системы управления версиями для использования MATLAB в Diff и Merge
Сравнение и объединение моделей Simulink
Сравнение и объединение моделей Simulink, содержащих поток состояний