Azure DevOps の「TF401179: An active pull request for the source and target branch already exists.」
「このソースとターゲットのブランチの、アクティブなプルリクエストがもうある」という意味です。Azure DevOps は、ソース ブランチとターゲット ブランチの組ごとに、アクティブなプルリクエストを1本だけ持ちます。下書きもアクティブなプルリクエストなので数に入ります。新しいコミットに問題があるわけではなく、ソース ブランチに push すれば、開いているプルリクエストが更新されます。
答えの全体
2019年〜2026年10月の公開の報告が引いている形です。REST API、az repos pr create、プルリクエストを作るパイプラインのタスク、.NET のクライアントから出ます:
HTTP/1.1 409 Conflict
{"$id":"1","innerException":null,"message":"TF401179: An active pull request for the source and target branch already exists.","typeName":"Microsoft.TeamFoundation.Git.Server.GitPullRequestExistsException, …","typeKey":"GitPullRequestExistsException",…}
- .NET のクライアントは
VssServiceException: TF401179: …として投げ、Azure CLI はERROR: TF401179: …と出します。 - 開いているプルリクエストのターゲットを変えたときにも出ます。同じソースから同じブランチへの、別のアクティブなプルリクエストがあるときです(2026年10月の、積み重ねたプルリクエストについての報告)。
- プルリクエストを決まった時刻に作るツールは、
TF401179かtypeKeyで見分けています。どちらもメッセージの言語が変わっても同じです。
開いているプルリクエストを見つける
- Web で:Repos → Pull requests → Active で、ソース ブランチを探します。下書きもここに並びます。
- Azure CLI で:
az repos pr list --source-branch <ソース> --target-branch <ターゲット> --status active - REST API で:
GET …/_apis/git/repositories/<リポジトリ>/pullrequests?searchCriteria.sourceRefName=refs/heads/<ソース>&searchCriteria.targetRefName=refs/heads/<ターゲット>&searchCriteria.status=active
どうするか
- コミットを足すだけなら、ソース ブランチに push します。開いているプルリクエストに新しい更新として出るので、作るものはありません。
- やり直すなら、開いているプルリクエストを完了するか破棄(Abandon)してから、新しく作ります。破棄したプルリクエストは、もう組をふさぎません。
- 2本ほしいなら、ソース ブランチから新しいブランチを作り、2本目はそこから開きます。
- 実行のたびに同じプルリクエストを開くパイプラインやスクリプトでは、TF401179 を「もう開いている」として扱います。上のやり方でプルリクエストを探し、実行を失敗にせずに題名や説明を更新します。プルリクエストを決まった時刻に作る公開のツールは、そうしています。
IntelliJ IDEA と Rider で Azure DevOps のプルリクエストを
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。組織・プロジェクト・リポジトリを git のリモートから読み、自分のレビューを待っているプルリクエストを IDE のツールウィンドウに並べます。Azure DevOps Services でも Azure DevOps Server でも使えます。Azure DevOps のプルリクエストを作成は、いまのブランチが push 済みかを確かめてから、そこからプルリクエストを開きます。1.0.36 からは、同じターゲットへのアクティブなプルリクエストがもうあるとき、その番号と題名を出し、ブランチに push すればそれが更新されることを案内します。レビューの受け箱は無料、投票・コメント・完了・作成は Pro(30日間の無料試用つき)です。画面は日本語です。
Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:TF401398:ソースかターゲットのブランチが無い · TF402455:このブランチへの push は許可されていない · TF401027:Git の許可が無い · TF401181:もう完了か破棄されている · English