Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2023-09-25. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

删除和恢复包

了解如何删除或恢复包。

GitHub上的包删除和恢复支持

在 GitHub 上,如果您有必要的访问权限,您可以删除:

  • 整个私有包
  • 整个公共包(如果任何包版本不超过 5000 次下载)
  • 私有包的特定版本
  • 公共包的特定版本(如果包版本不超过 5,000 次下载)

注意:

  • 如果任何版本的包下载量超过 5,000 次,则无法删除公共包。 在此方案中,请联系 GitHub 支持获取进一步帮助。
  • 删除公共包时,请注意,您可能会破坏依赖于包的项目。

出现以下情况时,您也可以在 GitHub 上恢复整个包或包版本:

  • 您在删除后 30 天内恢复包。
  • 相同的包命名空间仍然可用,并且不用于新包。

包 API 支持

对于某些注册表,可以使用 GraphQL 删除专用包的版本。

不能将 GitHub Packages GraphQL API 与支持精细权限的注册表配合使用。 有关仅支持存储库范围权限且可与 GraphQL API 一起使用的注册表,请参阅“关于 GitHub Packages 的权限”。

删除或恢复包所需的权限

借助支持精细权限的注册表,可以选择允许将包的范围限定为用户或组织,或链接到存储库。

若要删除具有独立于存储库的精细权限的包,例如存储在 https://containers.HOSTNAME/NAMESPACE/PACKAGE-NAME 的包(其中,NAMESPACE 是作为包的限定范围的个人帐户或组织的名称),必须具有对包的管理员访问权限。 有关详细信息,请参阅“关于 GitHub Packages 的权限”。

对于从存储库继承其访问权限的包,如果你对存储库拥有管理员权限,则可以删除包。

某些注册表仅支持存储库范围的包。 有关这些注册表的列表,请参阅“关于 GitHub Packages 的权限”。

删除包版本

在 GitHub 上删除存储库范围的包版本

若要删除存储库范围的包版本,必须拥有对发布包的存储库的管理员权限。 有关详细信息,请参阅“所需的权限”。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。

  2. 在存储库的右侧边栏中,单击“包”。

    存储库页面的边栏的屏幕截图。 “包”部分用橙色框出。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 导航到可以管理包类型版本的位置。

    • 如果包是容器,请在“最新版本”部分下单击“查看和管理所有版本”。 包的“最新版本”部分的屏幕截图。 下方以橙色边框突出显示了“查看和管理所有版本”链接。
    • 对于容器以外的包类型
      1. 在右侧,单击“ 包设置”。 包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。
      2. 在左侧,单击“管理版本”。 包的“管理版本”菜单的屏幕截图。 右下角是以橙色边框突出显示的“管理版本”。
  5. 在包列表中,找到要删除的包的版本。

    • 如果包是容器,请在包版本右侧单击 ,然后从下拉菜单中选择“删除版本”。 包版本的屏幕截图,其中包含标有烤肉串式图标的下拉菜单按钮。 菜单中的“删除版本”链接以橙色边框突出显示。
    • 对于容器以外的包类型,请单击包版本右侧的“删除”。 包版本的屏幕截图,其中包含“删除”按钮。 该按钮以橙色边框突出显示。
  6. 若要确认删除,请键入包名称,并单击“我知道后果,请删除此版本”。

使用 GraphQL 删除存储库范围的包版本

对于某些注册表,可以使用 GraphQL 删除专用包的版本。

不能将 GitHub Packages GraphQL API 与支持精细权限的注册表配合使用。 有关仅支持存储库范围权限且可与 GraphQL API 一起使用的注册表,请参阅“关于 GitHub Packages 的权限”。

在 GraphQL API 中使用 deletePackageVersion 突变。 必须使用具有 read:packagesdelete:packagesrepo 范围的 personal access token。 有关 personal access tokens 的详细信息,请参阅“GitHub Packages 简介”。

下面的示例演示如何删除 packageVersionIdMDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg 的包版本。

curl -X POST \
-H "Accept: application/vnd.github.package-deletes-preview+json" \
-H "Authorization: bearer TOKEN" \
-d '{"query":"mutation { deletePackageVersion(input:{packageVersionId:\"MDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg==\"}) { success }}"}' \
HOSTNAME/graphql

要查找已发布到 GitHub Packages 的所有私有包以及包的版本 ID,你可以通过 repository 对象使用 packages 连接。 你将需要具有 read:packagesrepo 范围的 personal access token。 有关详细信息,请参阅 packages 连接或 PackageOwner 接口。

有关 deletePackageVersion 突变的详细信息,请参阅“突变”。

您不能直接使用 GraphQL 删除整个包,但如果您删除包的每个版本,该包将不再显示在 GitHub Enterprise Server 上。

删除整个包

在 GitHub 上删除整个仓库范围的包

要删除整个仓库范围的包,您必须对拥有该包的仓库具有管理员权限。 有关详细信息,请参阅“所需的权限”。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。

  2. 在存储库的右侧边栏中,单击“包”。

    存储库页面的边栏的屏幕截图。 “包”部分用橙色框出。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  5. 在页面底部的“危险区域”下,单击“删除此包”。

  6. 要确认,请查看确认消息,输入包名称,然后单击“我了解,删除此包”。

在 GitHub 上删除整个用户范围的包

若要查看谁可以删除包,请参阅“所需权限”。

  1. 在 GitHub 上,导航到个人帐户的主页面。

  2. 在 GitHub Enterprise Server 的右上角,单击你的头像照片,然后单击“你的个人资料”。

    @octocat 的个人资料图片下的下拉菜单的屏幕截图。 “你的个人资料”用深橙色框出。

  3. 在个人资料页面上的标题中,单击 “包”选项卡。

  4. 搜索要管理的包的名称,然后单击该名称。

  5. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  6. 在左侧,单击“选项”。 包的“选项”菜单的屏幕截图。 右下角是以橙色边框突出显示的“选项”。

  7. 在页面底部的“危险区域”下,单击“删除此包”。

  8. 在确认框中,键入包的名称以确认你要删除此包。

  9. 单击“我了解后果,删除此包”。

在 GitHub 上删除整个组织范围的包

若要查看谁可以删除包,请参阅“所需权限”。

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “包”选项卡。

    @octo-org 的个人资料页面的屏幕截图。 “包”选项卡以橙色边框突出显示。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  5. 在左侧,单击“选项”。 包的“选项”菜单的屏幕截图。 右下角是以橙色边框突出显示的“选项”。

  6. 在页面底部的“危险区域”下,单击“删除此包”。

  7. 在确认框中,键入包的名称以确认你要删除此包。

  8. 单击“我了解后果,删除此包”。

恢复包

您在以下情况下可以恢复已删除的包或版本:

  • 您在删除后 30 天内恢复包。
  • 相同的包名称空间和版本仍然可用,并且不重复用于新包。

例如,如果你是用户 octocat,并且有一个范围已限定为 octocat/my-repo 存储库的已删除的 RubyGems 包 my-package,则仅当包命名空间 rubygem.pkg.github.com/octocat/my-repo/my-package 仍然可用且尚未过 30 天时,才能还原该包。

若要删除包,还必须对发布包的存储库具有管理员权限。

有关详细信息,请参阅“所需的权限”。

在包恢复后,包将使用与以前相同的名称空间。 如果相同的包名称空间不可用,您将无法恢复包。 在这种情况下,要恢复已删除的包,您必须先删除使用已删除包名称空间的新包。

恢复组织中的包

可以通过组织帐户设置恢复已删除的包,只要该包位于组织拥有的存储库中,或者具有粒度权限,并且范围限定在你的组织帐户。

若要查看谁可以在组织中还原包,请参阅“所需权限”。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到组织的主页。

  2. 在组织名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择 下拉菜单,然后单击“设置” 。

    组织的水平导航栏的屏幕截图。 “设置”选项卡以深橙色标出。

  3. 在左侧,单击“包”。

  4. 在“已删除的包”下要还原的包旁边,单击“还原”。

  5. 若要确认,请输入包名称,然后单击我明白后果,恢复此包”。

恢复用户帐户范围的包

如果包位于你的一个存储库中或范围限定为你的个人帐户,则可以通过个人帐户设置还原已删除的包。 有关详细信息,请参阅“所需的权限”。

  1. 在任何页面的右上角,单击个人资料照片,然后单击“设置”。

    GitHub 帐户菜单的屏幕截图,其中显示了供用户查看和编辑其个人资料、内容和设置的选项。 菜单项“设置”用深橙色框出。

  2. 在左侧边栏中,单击“包”。

  3. 在“已删除的包”下要还原的包旁边,单击“还原”。

  4. 若要确认,请输入包名称,然后单击我明白后果,恢复此包”。

恢复包版本

您可以从包的登录页面恢复包版本。 若要查看谁可以还原包,请参阅“所需权限”。

  1. 导航到包的登录页。

  2. 搜索要管理的包的名称,然后单击该名称。

  3. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  4. 导航到可以管理包类型版本的位置。

    • 如果包是容器,请在“最新版本”部分下单击“查看和管理所有版本”。 包的“最新版本”部分的屏幕截图。 下方以橙色边框突出显示了“查看和管理所有版本”链接。
    • 对于容器以外的包类型
      1. 在右侧,单击“ 包设置”。 包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。
      2. 在左侧,单击“管理版本”。 包的“管理版本”菜单的屏幕截图。 右下角是以橙色边框突出显示的“管理版本”。
  5. 在包版本列表的右上角,使用“选择版本视图”下拉列表,然后选择“已删除” 。

    包版本列表的屏幕截图。 版本视图中的“已删除”选项以橙色边框突出显示。

  6. 在要还原的已删除包版本旁边,单击“还原”。

  7. 若要确认,请单击“我了解后果,还原此版本”。