Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
如果用户意外删除了预配的(项目)或已发布的(代码)wiki,则可以还原它。 尽管 UI 中没有用于删除 Wiki 的选项,但用户可能使用 REST API 删除与 Wiki 关联的 Git 存储库。
注意
已删除的存储库在回收站中保留 30 天,之后它们会被永久删除且无法还原。
先决条件
| 类别 | 要求 |
|---|---|
| 项目访问权限 | Wiki 所在的项目的成员。 如果没有访问权限,请从项目管理员请求它。 有权访问团队项目的任何人都可以查看 Wiki,包括 利益干系人。 |
| 权限 | - 若要添加或编辑 wiki 页面:参与者 组的成员。 - 若要将代码发布为 wiki:创建存储库 权限。 默认情况下,为 项目管理员组的成员设置此权限。 |
| 访问级别 | 至少具有基本访问权限。 |
恢复完整的 wiki
Wiki(项目和代码)作为存储库存储在 Azure DevOps 中的项目中。 完成以下步骤,使用 REST API 还原完整的 Wiki。
检索 git 存储库:列出存储库。
使用
includeHidden=true参数查看 Wiki 存储库。GET https://dev.azure.com/christiechurch/fabrikamfiber/_apis/git/repositories?includeHidden=true&api-version=7.1-preview.1{ "id": "978e3886-64a8-4b6f-96da-6afc2936b04b", "name": "fabrikamfiber.wiki", "url": https://dev.azure.com/christiechurch/052a83ac-af70-4194-b53f-df073e5f1786/_apis/git/repositories/978e3886-64a8-4b6f-96da-6afc2936b04b, "project": { "id": "052a83ac-af70-4194-b53f-df073e5f1786", "name": "fabrikamfiber", "url": https://dev.azure.com/christiechurch/_apis/projects/052a83ac-af70-4194-b53f-df073e5f1786, "state": "wellFormed", "revision": 421800049, "visibility": "organization", "lastUpdateTime": "2023-07-18T12:25:29.3Z" }, "defaultBranch": "refs/heads/wikiMaster", "size": 193, "remoteUrl": https://christiechurch@dev.azure.com/christiechurch/fabrikamfiber/_git/fabrikamfiber.wiki, "sshUrl": git@ssh.dev.azure.com:v3/christiechurch/fabrikamfiber/fabrikamfiber.wiki, "webUrl": https://dev.azure.com/christiechurch/fabrikamfiber/_git/fabrikamfiber.wiki, "isDisabled": false, "isInMaintenance": false }在回收站中搜索您的存储库。
GET https://dev.azure.com/christiechurch/fabrikamfiber/_apis/git/recycleBin/repositories?api-version=7.1-preview.1找到存储库(通常命名为
.wiki)时,请记下存储库 ID。{ "value": [ { "id": "978e3886-64a8-4b6f-96da-6afc2936b04b", "name": "fabrikamfiber.wiki", "project": { "id": "052a83ac-af70-4194-b53f-df073e5f1786", "name": "fabrikamfiber", "url": https://dev.azure.com/christiechurch/_apis/projects/052a83ac-af70-4194-b53f-df073e5f1786, "state": "wellFormed", "revision": 421800049, "visibility": "organization", "lastUpdateTime": "2023-07-18T12:25:29.3Z" }, "deletedBy": { "displayName": "Christie Church", "url": https://spsprodeus23.vssps.visualstudio.com/A1df9d653-bdfb-459b-a0c7-725052b2f944/_apis/Identities/0a0a4b55-9671-440d-87bf-26644f200d8a, "_links": { "avatar": { "href": https://dev.azure.com/christiechurch/_apis/GraphProfile/MemberAvatars/aad.MDY4MDk2OGQtYWU5OS03Y2M5LTgxZTEtNTBjMDk4ZTllZTlh } }, "id": "0a0a4b55-9671-440d-87bf-26644f200d8a", "uniqueName": christiechurch@fabrikam.com, "imageUrl": https://dev.azure.com/christiechurch/_api/_common/identityImage?id=0a0a4b55-9671-440d-87bf-26644f200d8a, "descriptor": "aad.MDY4MDk2OGQtYWU5OS03Y2M5LTgxZTEtNTBjMDk4ZTllZTlh" }, "createdDate": "2023-07-18T12:23:55.64Z", "deletedDate": "2023-07-18T12:41:38.737Z" } ], "count": 1 }-
PATCH https://dev.azure.com/christiechurch/fabrikamfiber/_apis/git/recycleBin/repositories/978e3886-64a8-4b6f-96da-6afc2936b04b?api-version=7.1-preview.1{ "deleted": false }
存储库内容还原。 如果 Wiki UI 不会自动出现,请发布还原的存储库作为 Wiki,或通过 Wiki REST API 创建 Wiki 以 将其重新注册到项目。
恢复 Wiki 页面
转到你的 repo 的 URL:
https://dev.azure.com/<OrgName>/<ProjectName>/_git/classicreleaseoption.wiki。搜索主分支的历史记录,
wikiMain。查找并选择已删除文件的提交。
请选择
更多操作,然后选择恢复。创建并完成拉取请求。
维基页面恢复。
使用 CLI 还原 Wiki 页面
如果更喜欢命令行选项,请执行以下步骤。
- 将 Wiki 克隆到本地计算机。
- 搜索已删除页面的提交。
- 查看提交。
- 复制页面以进行新的提交。
Wiki 页面已还原。
删除存储库
DELETE https://dev.azure.com/christiechurch/fabrikamfiber/_apis/git/repositories/052a83ac-af70-4194-b53f-df073e5f1786?api-version=7.1-preview.1
重新关联已还原的 Wiki
回收站还原会恢复 Git 存储库(wiki 页面和历史记录),但并不总是在 UI 中重新创建 Wiki 注册或文件名关联。
如果在还原存储库后未显示 Wiki,有两个选项:
选项 1:通过 UI 重新发布
- 转到项目中的 “概述>Wiki ”。
- 如果未显示 Wiki,请选择“ 发布代码为 wiki”。
- 选择还原的存储库和分支(通常
wikiMaster)。 - 根据需要提供 Wiki 名称和文件夹路径。
- 选择发布。
有关详细步骤,请参阅 将 Git 存储库发布到 Wiki。
选项 2:使用 REST API 重新创建 Wiki 注册
使用 Wiki 创建新的 Wiki- 创建 REST API:
POST https://dev.azure.com/{organization}/{project}/_apis/wiki/wikis?api-version=7.1-preview.2请求正文:
{ "type": "codeWiki", "name": "Fabrikam Fiber Wiki", "projectId": "052a83ac-af70-4194-b53f-df073e5f1786", "repositoryId": "978e3886-64a8-4b6f-96da-6afc2936b04b", "mappedPath": "/", "version": { "version": "wikiMaster" } }请替换以下值:
-
{organization}:Azure DevOps 组织名称 -
{project}:项目名称或 ID -
name:维基的显示名称 -
projectId:步骤 2 中的项目 ID -
repositoryId:步骤 2 中的存储库 ID -
mappedPath:根文件夹路径(通常/) -
version:分支名称(通常wikiMaster)
-
使用 Wikis - List REST API 列出 Wiki,以验证 Wiki 注册:
GET https://dev.azure.com/{organization}/{project}/_apis/wiki/wikis?api-version=7.1-preview.2
还原后验证
使用任一选项后:
- 确认存储库和分支存在于 Repos 中的项目中。
- 验证 Wiki 是否显示在“ 概述>Wiki”下的项目中。
- 检查引用旧 Wiki 的权限、链接和任何小组件。
注意
- 回收站和某些 Wiki 注册 API 目前为预览版,可能会发生变更 — 请在非生产环境中测试,并使用为您的环境记录的 API 版本。
- 对于项目 Wiki(预配的 Wiki),请在 REST API 调用中使用
type: "projectWiki"而非"codeWiki",并省略repositoryId和mappedPath属性。