Lesstep
Azure Repos・git push・2026年10月24日に確認

Azure DevOps:「TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.」

そのブランチには必須のブランチ ポリシーがあるので、Azure Repos はプルリクエスト経由の変更しか受け付けません。push は断られ、サーバーのブランチは変わっておらず、コミットは手元のブランチに残っています。コミットを新しいブランチに載せて push し、このブランチへのプルリクエストを作ります。

メッセージの全体

git は断りをこう表示します。かっこの中が Azure DevOps の文で(2018〜2023年の公開のバグ報告にある形)、ほかは git 自身の表示です。

 ! [remote rejected] main -> main (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)
error: failed to push some refs to 'https://dev.azure.com/<組織>/<プロジェクト>/_git/<リポジトリ>'

サインインの問題ではありません。Azure DevOps はあなたが誰かを受け付けたうえで、ブランチのポリシーを理由に断っています。同じアカウントのトークンやパスワードを作り直しても変わりません。

Azure Repos が断る理由

Microsoft のブランチ ポリシーの説明(Microsoft Learn)から:

コミットをプルリクエストへ移す

# 1. コミットを新しいブランチに載せる(そのブランチに移る)
git switch -c my-change

# 2. 新しいブランチを push する
git push -u origin my-change

# 3. 手元の main を、サーバーにある位置へ戻す
git branch -f main origin/main

この3つは、main への push を断る手元の git サーバーで実際に動かしました。コミットはサーバーの my-change に載り、手元の main は origin/main と同じ位置に戻りました。3 は 2 が成功してから行います。Git 2.23 より古ければ、1 は git checkout -b my-change です。

そのあと、my-change から main へのプルリクエストを作ります:

パイプラインが push する場合

バージョンの更新や変更履歴など、ブランチへコミットを戻すパイプラインも同じ断りを受けます。ブランチを push してプルリクエストを作るようにするか、パイプラインが動く ID に Bypass policies when pushing を与えます。Microsoft はこの権限をプロジェクト全体・1つのリポジトリ・1つのブランチの単位で与えられるようにしており、扱いに注意するよう書いています。与えるなら、そのブランチ1つだけにします。

IntelliJ IDEA や Rider から Azure DevOps のプルリクエストを作るなら

Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。Git メニューに Azure DevOps のプルリクエストを作成… を足します。今いるブランチから、選ばなければリポジトリの既定のブランチへ、下書きにもできるプルリクエストを作ります。ブランチがまだ Azure DevOps に無ければそう伝えて、先に IDE の push の画面を開きます。プルリクエストの作成は Pro(月 US$1・30日間の無料試用つき)、受信箱は無料です。画面は日本語です。

JetBrains Marketplace で入れる

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

ほかに:IntelliJ IDEA 2025.2 以降の Azure DevOps のプラグインの比較 · English