1. 概述

Azure DevOps Repository 是一款用于版本控制的工具,用于管理文件变更。在日常使用中,有时会因为误操作删除仓库,而 Azure DevOps 的界面中并没有类似“回收站”的显式入口来恢复仓库。

本文将介绍如何通过 Azure DevOps REST API 结合 Azure CLIPostman 发起请求,查找并恢复被删除的仓库。

2. 在 Azure DevOps 中生成 Token

要调用 Azure DevOps 的 REST API,我们需要一个 Personal Access Token(PAT)进行身份认证。操作步骤如下:

  1. 登录 Azure DevOps Portal
  2. 点击右上角用户头像 ➡️ User settings ➡️ Personal access tokens
  3. 点击 New Token 创建一个新的 Token

Navigating to token section

在弹出窗口中填写 Token 名称、组织(Organization)、有效期,并勾选 Full access 权限:

Creating token in Azure DevOps portal

生成后立即复制 Token 并妥善保存:

Copying token

⚠️ 注意:Token 只显示一次,关闭窗口后无法再次查看,建议及时保存。

3. 使用 Azure CLI 恢复仓库

3.1 登录 Azure DevOps

在命令行中使用以下命令登录 Azure DevOps(替换 {organization} 为你的组织名):

az devops login --organization https://dev.azure.com/{organization}/

系统会提示你输入刚才生成的 Token。

3.2 获取被删除的仓库列表

执行如下命令获取指定项目下的所有被删除仓库:

az devops invoke \
  --area git \
  --resource recycleBinRepositories \
  --route-parameters "project={project}" \
  --http-method GET \
  --api-version 7.1-preview

示例输出如下:

{
  "continuation_token": null,
  "count": 1,
  "value": [
    {
      "deletedDate": "2024-08-15T10:00:19.707Z",
      "id": "9328c878-d5c0-443a-9821-8666eddffcd8",
      "name": "deleted-repository"
    }
  ]
}

✅ 重点:记录下目标仓库的 id 字段。

3.3 构造恢复请求体

创建一个 payload.json 文件,内容如下:

{
  "deleted": false
}

3.4 执行恢复操作

使用如下命令发起恢复请求(替换 {project}{repositoryId}):

az devops invoke \
  --area git \
  --resource recycleBinRepositories \
  --route-parameters "project={project}" "repositoryId={repositoryId}" \
  --http-method PATCH \
  --in-file payload.json \
  --api-version 7.1-preview

如果返回的 state 字段为 wellFormed,说明恢复成功。

4. 使用 Postman 恢复仓库

4.1 获取被删除仓库列表

打开 Postman,新建一个 GET 请求:

https://dev.azure.com/{organization}/{project}/_apis/git/deletedrepositories?api-version=5.1-preview.1

设置 Authentication 为 Basic Auth,用户名留空,密码填写你的 PAT:

Listing deleted repositories in Azure DevOps

返回的 JSON 数据中包含被删除仓库的 nameid

4.2 执行恢复请求

新建一个 PATCH 请求:

https://dev.azure.com/{organization}/{project}/_apis/git/recycleBin/repositories/{repositoryId}?api-version=5.1-preview.1

设置 Authentication 同上,Body 设置为 raw JSON,内容如下:

{
  "deleted": false
}

发送请求后,仓库将被恢复:

Recovering deleted repository in Azure DevOps

✅ 建议:恢复完成后,建议及时 撤销(Revoke)该 Token,避免安全风险。

5. 总结

本文介绍了两种恢复 Azure DevOps 被删除仓库的方法:

方法 工具 说明
CLI Azure CLI 适合脚本化操作,自动化恢复
GUI Postman 适合调试、快速恢复

关键步骤包括:

  • ✅ 创建具有 Full 权限的 PAT
  • ✅ 获取被删除仓库的 ID
  • ✅ 构造 JSON 请求体并调用 REST API
  • ✅ 恢复后及时撤销 Token

⚠️ 踩坑提醒:

  • Token 生成后只显示一次,务必及时保存
  • 请求 URL 中的 api-version 版本号要匹配
  • 如果返回 403 Forbidden,请检查 Token 权限是否为 Full Access

通过本文方法,你可以在没有图形界面“回收站”的情况下,安全、有效地恢复被误删的 Azure DevOps 仓库。


原始标题:Recover Deleted Repository in Azure DevOps