Omniでコンフリクトが発生した場合の修正作業をやってみた

Omniでコンフリクトが発生した場合の修正作業をやってみた

2026.04.13

さがらです。

OmniのモデルはGitと連携することで、ブランチを作成→PR発行→レビュー→マージのフローでモデル変更を管理できます。複数人でモデル開発を行う際、異なるブランチで同じメジャーを変更してPRを発行するとコンフリクトが発生します。今回は、このコンフリクトがどのような画面で表示され、どのように解消できるかを確認してみました。

https://docs.omni.co/content/develop/branch-mode

前提条件

今回の検証は、以下の設定が完了している前提で進めます。

  • Omni: Git連携済み(GitHubリポジトリと接続)
  • Omniのロール: Querier以上(ブランチの作成に必要)
  • 変更対象のメジャー: 以下のsatisfaction_score_averageメジャーが既に定義済み
satisfaction_score_average:
  sql: ${omni_dbt_dwh__fact_support_ticket.satisfaction_score}
  label: 満足度スコア Average
  aggregate_type: average

2026-04-13_10h27_25

事前準備

ブランチAを作成して変更を加える

Omni IDEで新しいブランチ(今回はbranch-a)を作成します。

2026-04-13_10h28_40

ブランチAのIDE上で、対象のviewファイルを開き、satisfaction_score_averageメジャーのlabelブランチaから修正に変更します。

satisfaction_score_average:
  sql: ${omni_dbt_dwh__fact_support_ticket.satisfaction_score}
  label: ブランチaから修正
  aggregate_type: average

変更後、Omniの右上のCreate pull requestボタンを押して、GitHubリポジトリにPRを発行します。(コンフリクト検証のため、この時点ではマージしません。)

2026-04-13_10h29_29

ブランチBを作成して変更を加える

次に、ブランチAのPRマージ前のmainブランチから新しいブランチ(branch-b)を作成します。

2026-04-13_10h30_43

ブランチBのIDE上で、同じsatisfaction_score_averageメジャーのlabelブランチBから修正に変更します。

satisfaction_score_average:
  sql: ${omni_dbt_dwh__fact_support_ticket.satisfaction_score}
  label: ブランチBから修正
  aggregate_type: average

変更後、右上のCreate pull requestボタンを押して、GitHubリポジトリにPRを発行します。(コンフリクト検証のため、この時点ではマージしません。)

2026-04-13_10h32_07

試してみた

1. ブランチAのPRをマージする

GitHubのPR画面からブランチAのPRをマージします。これにより、mainブランチにlabel: ブランチaから修正が反映されます。

2026-04-13_10h33_31

マージ後、OmniのShared modelにも変更が反映されていることを確認します。メジャーのlabelブランチaから修正に変わっていればOKです。

2026-04-13_10h34_30

2. ブランチBのPRのマージを試みてコンフリクトを確認する

続けてブランチBのGitHubのPR画面を確認すると、コンフリクトが発生していることが表示されます。

コンフリクトが発生している理由は、ブランチAとブランチBが同じファイルの同じ行(labelパラメータ)を変更しており、mainへのマージ時に競合が生じているためです。

2026-04-13_10h51_41

3. GitHubのWeb UIでコンフリクトを解消する

GitHubのPR画面でResolve conflictsボタンを押します。

2026-04-13_10h51_41

コンフリクトのある箇所が以下のように表示されます。

2026-04-13_10h52_41

今回はブランチBから修正を採用するため、コンフリクトマーカーと不要な行を削除して以下の状態にします。

2026-04-13_10h53_12

Mark as resolvedボタンを押し、続けてCommit mergeボタンを押してコンフリクト解消をコミットします。

2026-04-13_10h53_46

4. PRをマージしてOmniに変更を反映させる

コンフリクトが解消されると、PRのステータスがNo conflicts with base branchに変わります。問題なければMerge pull requestボタンを押してマージします。

2026-04-13_10h54_38

GitHubでのマージ完了後、OmniのShared modelに戻ります。satisfaction_score_averageメジャーのlabelブランチBから修正に更新されていれば完了です。

2026-04-13_10h55_21

最後に

OmniのブランチモードでPRを発行した際のコンフリクト発生・解消の流れを確認しました。

ポイントとしては、コンフリクトはGitHub PR上で発生・解消するという点だと思います。他のIDE搭載のSaaSではSaaSの画面上でコンフリクトを修正するものもありますが、OmniではGitHubのPRコンフリクト解消機能を使う仕様でした。(例として、dbt platformではIDE上でコンフリクト解消できます)

コンフリクトが発生しないように開発を行っていけることが理想ではありますが、もしコンフリクトが発生した場合はこの記事の内容が参考になると嬉しいです。

この記事をシェアする

関連記事