删除和恢复包

了解如何删除或恢复包。

GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 和 GitHub AE。

本文内容

GitHub上的包删除和恢复支持

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

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

注:

  • 如果任何版本的包下载量超过 25 次,则无法删除公共包。 在这种情况下,请联系 GitHub 支持 获取更多帮助。
  • 删除公共包时,请注意,您可能会破坏依赖于包的项目。

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

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

包 API 支持

对于继承其权限和从仓库访问权限的包,您可以使用 GraphQL 来删除特定的包。

删除或恢复包所需的权限

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

GitHub Packages 上仓库范围的包中包括以下包:

  • npm
  • RubyGems
  • maven
  • Gradle
  • NuGet
  • docker.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME 上的 Docker 映像

使用 GitHub Actions 自动删除软件包版本

您可以使用 GitHub 创建的官方操作自动删除软件包。 此操作可在操作仓库或 GitHub Marketplace 上使用,只适用于仓库范围的软件包。 更多信息请参阅 GitHub Marketplace 上或操作仓库中的“删除包版本”操作。

删除包版本

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

要删除仓库范围包的版本,您必须对拥有该包的仓库具有管理员权限。 更多信息请参阅“必需权限”。

  1. 在 GitHub Enterprise Server 上,导航到仓库的主页面。

  2. 在文件列表右侧,单击 Packages(包)

    概述页面上的包链接

  3. 搜索并选择您的包。

  4. 在包登录页的右上角,单击 Package settings(包设置)包设置按钮

  5. 在左侧单击 Manage versions(管理版本)

  6. 在要删除的版本的右侧,单击 并选择 Delete version(删除版本)删除包版本按钮

  7. 要确认删除,请输入包名称,然后单击 I understand the consequences, delete this version(我明白后果,删除此版本)确认包删除按钮

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

对于从仓库继承其许可和访问权限的包,您可以使用 GraphQL 删除特定的包版本。

在 GraphQL API 中使用 deletePackageVersion 突变。 必须使用具有 read:packagesdelete:packagesrepo 作用域的令牌。 有关令牌的更多信息,请参阅“关于 GitHub Packages”。

下面的示例演示如何使用 packageVersionId of MDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg 删除包版本。

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,您可以使用 registryPackagesForQuery 连接。 您需要具有 read:packagesrepo 作用域的令牌。 更多信息请参阅“registryPackagesForQuery”。

有关 deletePackageVersion 突变的更多信息,请参阅“deletePackageVersion”。

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

删除整个包

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

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

  1. 在 GitHub Enterprise Server 上,导航到仓库的主页面。

  2. 在文件列表右侧,单击 Packages(包)

    概述页面上的包链接

  3. 搜索并选择您的包。

  4. 在包登录页的右上角,单击 Package settings(包设置)包设置按钮

  5. 在“Danger Zone(危险区域)”下,单击Delete this package(删除此包)

  6. 要确认,请查看确认消息,输入您的包名称,然后单击 I understand, delete this package(我了解,删除此包)确认包删除按钮

恢复包

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

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

例如,如果您删除了名为 octo-package 且范围为 repo octo-repo-owner/octo-repo 的 rubygem 包,则您仅在包名称空间 rubygem.pkg.github.com/octo-repo-owner/octo-repo/octo-package 仍然可用且 30 天未过时才可恢复包。

您还必须满足这些权限要求之一:

  • 对于仓库范围的包:您必须对拥有删除的包的仓库具有管理员权限。
  • 对于用户帐户范围的包:您的用户帐户拥有已删除的包。
  • 对于组织范围的包:您对拥有包的组织中删除的包具有管理员权限。

更多信息请参阅“必需权限”。

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

恢复组织中的包

您可以通过组织帐户设置恢复已删除的包,只要该包位于您的一个仓库中或具有粒度权限,并且范围限于您的组织帐户。

要查看谁可以恢复组织中的包,请参阅“必需权限”。

  1. 在 GitHub Enterprise Server 上,导航到组织的主页面。
  2. 在组织名称下,单击 Settings(设置)组织设置按钮
  3. 在左侧,单击 Packages(包)
  4. 在“Deleted Packages(已删除的包)”下要恢复的包旁边,单击 Restore(恢复)恢复按钮
  5. 要确认,请输入包名称,然后单击I understand the consequences, restore this package(我明白后果,恢复此包)恢复包确认按钮

恢复用户帐户范围的包

如果包在您的一个仓库中或范围限于您的用户帐,则您可以通过用户帐户设置恢复已删除的包。 更多信息请参阅“必需权限”。

  1. 在任何页面的右上角,单击您的个人资料照片,然后单击 Settings(设置)用户栏中的 Settings 图标
  2. 在左侧,单击 Packages(包)
  3. 在“Deleted Packages(已删除的包)”下要恢复的包旁边,单击 Restore(恢复)恢复按钮
  4. 要确认,请输入包名称,然后单击I understand the consequences, restore this package(我明白后果,恢复此包)恢复包确认按钮

恢复包版本

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

  1. 导航到包的登录页。
  2. 在右侧单击 Package settings(包设置)
  3. 在左侧单击 Manage versions(管理版本)
  4. 在右上角,使用“Versions(版本)”下拉菜单选择 Deleted(已删除)显示已删除选项的版本下拉菜单
  5. 在您要恢复的已删除包版本旁边,单击 Restore(恢复)已删除的包版本旁边的恢复选项
  6. 要确认,请单击 I understand the consequences, restore this version(我明白后果,恢复此版本)确认包版本恢复

此文档对您有帮助吗?隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。