还原已删除的 Wiki

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。

  1. 检索 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
            }
    
  2. 在回收站中搜索您的存储库。

    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
    }
    
  3. 从存储库回收站恢复 wiki

    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 页面

  1. 转到你的 repo 的 URL:https://dev.azure.com/<OrgName>/<ProjectName>/_git/classicreleaseoption.wiki

  2. 搜索主分支的历史记录,wikiMain

  3. 查找并选择已删除文件的提交。

  4. 请选择更多操作,然后选择恢复

  5. 创建并完成拉取请求。

维基页面恢复。

使用 CLI 还原 Wiki 页面

如果更喜欢命令行选项,请执行以下步骤。

  1. 将 Wiki 克隆到本地计算机。
  2. 搜索已删除页面的提交。
  3. 查看提交。
  4. 复制页面以进行新的提交。

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 重新发布

  1. 转到项目中的 “概述>Wiki ”。
  2. 如果未显示 Wiki,请选择“ 发布代码为 wiki”。
  3. 选择还原的存储库和分支(通常 wikiMaster)。
  4. 根据需要提供 Wiki 名称和文件夹路径。
  5. 选择发布

有关详细步骤,请参阅 将 Git 存储库发布到 Wiki

选项 2:使用 REST API 重新创建 Wiki 注册

  1. 使用 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
  2. 使用 Wikis - List REST API 列出 Wiki,以验证 Wiki 注册:

    GET https://dev.azure.com/{organization}/{project}/_apis/wiki/wikis?api-version=7.1-preview.2
    

还原后验证

使用任一选项后:

  1. 确认存储库和分支存在于 Repos 中的项目中。
  2. 验证 Wiki 是否显示在“ 概述>Wiki”下的项目中。
  3. 检查引用旧 Wiki 的权限、链接和任何小组件。

注意

  • 回收站和某些 Wiki 注册 API 目前为预览版,可能会发生变更 — 请在非生产环境中测试,并使用为您的环境记录的 API 版本。
  • 对于项目 Wiki(预配的 Wiki),请在 REST API 调用中使用 type: "projectWiki" 而非 "codeWiki",并省略 repositoryIdmappedPath 属性。

后续步骤