Azure DevOps の Git のリモート URL:dev.azure.com・visualstudio.com・DefaultCollection
Azure DevOps には https://dev.azure.com/{organization} と、昔からの https://{organization}.visualstudio.com の2つの住所があり、年月をかけてクローンされたリポジトリには、いくつもの形のクローンの URL が残っています。その多くは今も git で通ります。どれが通るか、各部分が何を意味するか、ツールがどこで間違えるかを、公開リポジトリにサインインなしの git ls-remote で確かめました。
すべての形を試した結果
2026年10月30日、プロジェクトと同じ名前の公開リポジトリと、違う名前の公開リポジトリで:
https://dev.azure.com/{organization}/{project}/_git/{repository}:通る。Azure DevOps が配る形(REST API のremoteUrl)で、dev.azure.comの前に{organization}@が付きます。このユーザー名付きでも通ります。https://{organization}.visualstudio.com/{project}/_git/{repository}:通る。https://{organization}.visualstudio.com/DefaultCollection/{project}/_git/{repository}:通る。visualstudio.com では、プロジェクトの前のDefaultCollectionは読み飛ばされます。https://dev.azure.com/{organization}/DefaultCollection/{project}/_git/{repository}:通らない。git も REST API も(HTML の「404 - Page not found」)。DefaultCollectionは古い住所だけのものです。- URL にプロジェクトが無い形:
https://{organization}.visualstudio.com/_git/{repository}・https://{organization}.visualstudio.com/DefaultCollection/_git/{repository}・https://dev.azure.com/{organization}/_git/{repository}は、プロジェクトと同じ名前のリポジトリでは3つとも通り、完全な URL と同じコミットを読みました。もう一方のリポジトリでは通りません。この形は「プロジェクトと同じ名前のリポジトリ」を意味し、リポジトリの名前がプロジェクトの名前として読まれるからです。 - 末尾の
.git(…/_git/{repository}.git):通らない。Azure Repos は{repository}.gitという名前のリポジトリを探します。 - 大文字と小文字は関係ありません:
https://POWERSHELL.visualstudio.com/powershell/_git/powershellは元の書き方と同じリポジトリを読みました。
こうして通らない URL は、サインインしていない人には「見つからない」と言いません。git がユーザー名を求めます。Azure DevOps は、非公開か無いリポジトリへの求めにサインインで答えるからです。サインインしていれば、プロジェクトの部分の同じ間違いは TF200016: The following project does not exist になります。
SSH では、2つの住所にそれぞれの形があります(REST API が返すもの):git@ssh.dev.azure.com:v3/{organization}/{project}/{repository} と {organization}@vs-ssh.visualstudio.com:v3/{organization}/{project}/{repository}。どちらも必ずプロジェクトを含みます(2026年の Azure DevOps と SSH)。
自分の組織がどちらの住所か
組織にはどちらかの形の「プライマリ URL」があります。2018年9月10日以降に作った組織は dev.azure.com、それより前の組織は visualstudio.com で始まり、管理者が変えられます(Microsoft の 組織の URL を扱う)。プライマリ URL は、パイプラインの SYSTEM_TEAMFOUNDATIONCOLLECTIONURI や、通知・サービスフックのリンクに使われます。どちらにしても、git と REST API には両方の形が通ります。
調べるのにサインインは要りません:
GET https://dev.azure.com/_apis/resourceAreas/79134C72-4A58-4B42-976C-04E7115F32BF?accountName={organization}&api-version=5.0-preview.1
{"id": "79134c72-4a58-4b42-976c-04e7115f32bf", "name": "core", "locationUrl": "https://dev.azure.com/{organization}/"}
組織でない名前には、同じ求めが 404 と TF400677: Host … does not exist. を返しました。
REST API は、呼ばれた形で答えます。visualstudio.com で求めると、リポジトリの remoteUrl は https://{organization}.visualstudio.com/{project}/_git/{repository}、sshUrl は vs-ssh.visualstudio.com のもの。dev.azure.com で求めると https://{organization}@dev.azure.com/{organization}/{project}/_git/{repository} と git@ssh.dev.azure.com:v3/…。どちらにも DefaultCollection は付きませんでした。
リモートを dev.azure.com に切り替える
- 今のリモートを見ます:
git remote -v - 新しい URL を Repos > Files > Clone から写すか、上の結果から書きます:
DefaultCollectionを外し、プロジェクトが無ければ入れ(URL に無かったときはリポジトリの名前)、.gitは付けません。 - 設定します:
git remote set-url origin https://dev.azure.com/{organization}/{project}/_git/{repository}、続けてgit fetch。
サーバーの側は何も変わらず、切り替えていない人には古い URL がそのまま通ります。資格情報ヘルパーはサインインを住所ごとに覚えるので、新しい住所での最初の fetch で一度サインインを求められることがあります(Git Credential Manager 3.0 と Azure Repos)。
ツールが間違えるところ
パスを位置で切り分けるツールは、古い形を読み違えます:DefaultCollection や _git をプロジェクトと取り違えたり、そもそも Azure DevOps の URL と見なさなかったり。公開の報告(2019〜2026年)では、エディターの拡張機能、デスクトップのコーディングアプリ、依存関係の更新ツールがこうして失敗し、多くは TF200016 になりました。git では通るのに、あるツールだけがリポジトリを見つけられないなら、リモートを見てください。プロジェクトの入った dev.azure.com の形が、どのツールも前提にしている形です。
IntelliJ IDEA と Rider で Azure DevOps のプルリクエストを
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。組織・プロジェクト・リポジトリを git のリモートから読みます。上の形のうち git で通るものは全部(プロジェクトの無い形は 1.0.72 から)、SSH のリモートも読めます。そのうえで、自分のレビューを待っているプルリクエストを IDE のツールウィンドウに並べます。Azure DevOps Services でも Azure DevOps Server でも使えます。レビューの受け箱と差分は無料、投票・コメント・完了・作成は Pro(30日間の無料試用つき)です。画面は日本語です。
Azure DevOps と Visual Studio は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:TF200016:その名前のプロジェクトが無い · 2026年の Azure DevOps と SSH · Git Credential Manager 3.0 と Azure Repos · English