Lesstep
Azure DevOps Services・Server・プルリク・2026年10月26日

Azure DevOps のプルリクのマージ競合

Azure Repos のプルリクエストで、ソース ブランチとターゲット ブランチが同じ行を別々に変えていたり、片方が変えたファイルをもう片方が消していたりすると、Azure DevOps はマージ コミットを作れず、プルリクは「競合」で止まります。以下は、そのとき何が出て、どうすればプルリクが先へ進むかを、Microsoft の pull request を完了、破棄、または元に戻す・Git のマージ競合を解決する・Pull Requests - Get(英語)からまとめたものです。

Azure DevOps に出るもの

手元で解消する

ふつうは、手元でターゲット ブランチをソース ブランチにマージし、そこで競合を解消してプッシュします。ソース ブランチが feature、ターゲットが main なら:

git fetch origin
git checkout feature
git merge origin/main
# Git は "Automatic merge failed; fix conflicts and then commit the result." で止まる
# 競合したファイルを直してから
git add <ファイル>          # 片方で消されたファイルを消すなら git rm <ファイル>
git merge --continue
git push

ブラウザーで解消する

Web の画面は競合を並べるだけで、直す編集画面はありません。Microsoft DevLabs の Pull Request Merge Conflict Extension を Visual Studio Marketplace から組織に入れると、プルリクに Conflicts タブが増え、ファイルを選んで解消のしかたを決め、VS Code の編集部品(Monaco)で直して送れます。掲載ページには既知の問題として、8 MB を超えるファイルはソースかターゲットのファイルを丸ごと取ることしかできない場合があること、競合が見つかったファイルしか編集できないこと、ディレクトリとファイルの競合には対応していないこと、競合したファイルの更新が Files タブに出ないことが書かれています。DevLabs は、自分の拡張機能を「サポート対象外の実験」と説明しています。また、この拡張機能で解消したプルリクは、リベースのマージの種類では完了できません。Microsoft は、3方向マージに当てた解消は、コミットを1つずつリベースし直すとまず有効にならないと説明しています。手元でリベースしてプッシュするか、スカッシュにします。

REST API から

IntelliJ IDEA でマージ競合を解消する

Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。Azure DevOps Services と Azure DevOps Server のプルリクエストを IDE のツールウィンドウに並べます。1.0.57 から、マージ競合のあるプルリクは概要のいちばん上にそう出て、IDE で解消するを押すと、fetch してソース ブランチをチェックアウトし、ターゲット ブランチをそこへマージします。競合したファイルは IDE のマージの画面(自分の変更を採用・相手の変更を採用・左右に並べてマージ)で開きます。1.0.60 からは、概要に競合しているファイルと、それぞれ何がぶつかっているか(両方で変更・片方で削除・両方で追加・別々に名前を変更・ファイルとフォルダー)を、Azure DevOps がそのプルリクについて返すとおりに先に並べます。マージをコミットしてブランチをプッシュすれば、Azure DevOps がマージを試し直します。競合の解消は無料で、レビューの受信箱・差分・ブランチ ポリシーも無料、投票・コメント・完了・プルリクの作成は Pro(30日間の無料試用つき)です。画面は日本語です。

JetBrains Marketplace で入れる

Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:自動完了と任意のポリシー · マージの種類 · ビルドの検証 · English