GitHub上的包删除和恢复支持
在 GitHub 上,如果您有必要的访问权限,您可以删除:
- 整个私有包
- 整个公共包(如果任何包版本不超过 25 次下载)
- 私有包的特定版本
- 公共包的特定版本(如果包版本不超过 25 次下载)
注:
- 如果任何版本的包下载量超过 25 次,则无法删除公共包。 在这种情况下,请联系 GitHub 支持 获取更多帮助。
- 删除公共包时,请注意,您可能会破坏依赖于包的项目。
出现以下情况时,您也可以在 GitHub 上恢复整个包或包版本:
- 您在删除后 30 天内恢复包。
- 相同的包名称空间仍然可用,并且不用于新包。
包 API 支持
您可以使用 REST API 来管理您的包。 更多信息请参阅“GitHub Packages API”。
对于继承其权限和从仓库访问权限的包,您可以使用 GraphQL 来删除特定的包。 GitHub Packages GraphQL API 不支持使用包命名空间 https://ghcr.io/OWNER/PACKAGE-NAME
的容器或 Docker 映像。 有关 GraphQL 支持的更多信息,请参阅“使用 GraphQL 删除仓库范围包的版本”。
注:GitHub Container Registry 目前处于公测阶段,可能会更改。 在测试阶段,存储和带宽是免费的。 要使用 GitHub Container Registry,您必须启用功能预览。 更多信息请参阅“关于 GitHub Container Registry”和“启用改进的容器支持”。
删除或恢复包所需的权限
对于从仓库继承其访问权限的包,如果您拥有仓库管理权限,则可以删除包。
GitHub Packages 上仓库范围的包中包括以下包:
- npm
- RubyGems
- maven
- Gradle
- NuGet
docker.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME
上的 Docker 映像
要删除与仓库分开的具有粒度权限的软件包,例如存储在 https://ghcr.io/OWNER/PACKAGE-NAME
上的容器或 Docker 映像,您必须对该包具有管理员访问权限。
注:GitHub Container Registry 目前处于公测阶段,可能会更改。 在测试阶段,存储和带宽是免费的。 要使用 GitHub Container Registry,您必须启用功能预览。 更多信息请参阅“关于 GitHub Container Registry”和“启用改进的容器支持”。
使用 GitHub Actions 自动删除软件包版本
您可以使用 GitHub 创建的官方操作自动删除软件包。 此操作可在操作仓库或 GitHub Marketplace 上使用,只适用于仓库范围的软件包。 更多信息请参阅 GitHub Marketplace 上或操作仓库中的“删除包版本”操作。
删除包版本
在 GitHub 上删除仓库范围的包版本
要删除仓库范围包的版本,您必须对拥有该包的仓库具有管理员权限。 更多信息请参阅“必需权限”。
-
在 GitHub 上,导航到仓库的主页面。
-
在文件列表右侧,单击 Packages(包)。
-
搜索并选择您的包。
-
在包登录页的右上角,单击 Package settings(包设置)。
-
在左侧单击 Manage versions(管理版本)。
-
在要删除的版本的右侧,单击 并选择 Delete version(删除版本)。
-
要确认删除,请输入包名称,然后单击 I understand the consequences, delete this version(我明白后果,删除此版本)。
使用 GraphQL 删除仓库范围包的版本
对于从仓库继承其许可和访问权限的包,您可以使用 GraphQL 删除特定的包版本。
ghcr.io
上的容器或 Docker 映像不支持 GraphQL。
在 GraphQL API 中使用 deletePackageVersion
突变。 必须使用具有 read:packages
、delete:packages
和 repo
作用域的令牌。 有关令牌的更多信息,请参阅“关于 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:packages
和 repo
作用域的令牌。 更多信息请参阅“registryPackagesForQuery
”。
有关 deletePackageVersion
突变的更多信息,请参阅“deletePackageVersion
”。
您不能直接使用 GraphQL 删除整个包,但如果您删除包的每个版本,该包将不再显示在 GitHub 上。
在 GitHub 上删除用户范围的包版本
要在 GitHub 上删除用户范围包的特定版本,例如 ghcr.io
上的 Docker 映像,请使用以下步骤。 要删除整个包,请参阅“删除 GitHub 上整个用户范围的包”。
注:GitHub Container Registry 目前处于公测阶段,可能会更改。 在测试阶段,存储和带宽是免费的。 要使用 GitHub Container Registry,您必须启用功能预览。 更多信息请参阅“关于 GitHub Container Registry”和“启用改进的容器支持”。
要查看谁可以删除包版本,请参阅“必需权限”。
- 在 GitHub 上,导航到用户帐户的主页面。
- 在 GitHub 的右上角,单击您的个人资料照片,然后单击 Your profile(您的个人资料)。
- 在个人资料页面的右上角,单击 Packages(包)。
- 搜索并选择您的包。
- 在包登录页的右上角,单击 Package settings(包设置)。
- 在左侧单击 Manage versions(管理版本)。
- 在要删除的版本的右侧,单击 并选择 Delete version(删除版本)。
- 要确认删除,请输入包名称,然后单击 I understand the consequences, delete this version(我明白后果,删除此版本)。
在 GitHub 上删除组织范围包版本
要在 GitHub 上删除组织范围包的特定版本,例如 ghcr.io
上的 Docker 映像,请使用以下步骤。 要删除整个包,请参阅“删除 GitHub 上整个组织范围的包”。
注:GitHub Container Registry 目前处于公测阶段,可能会更改。 在测试阶段,存储和带宽是免费的。 要使用 GitHub Container Registry,您必须启用功能预览。 更多信息请参阅“关于 GitHub Container Registry”和“启用改进的容器支持”。
要查看谁可以删除包版本,请参阅“必需权限”。
- 在 GitHub 上,导航到组织的主页面。
- 在组织名称下,单击 Packages(包)。
- 搜索并选择您的包。
- 在包登录页的右上角,单击 Package settings(包设置)。
- 在左侧单击 Manage versions(管理版本)。
- 在要删除的版本的右侧,单击 并选择 Delete version(删除版本)。
- 要确认删除,请输入包名称,然后单击 I understand the consequences, delete this version(我明白后果,删除此版本)。
删除整个包
在 GitHub 上删除整个仓库范围的包
要删除整个仓库范围的包,您必须对拥有该包的仓库具有管理员权限。 更多信息请参阅“必需权限”。
-
在 GitHub 上,导航到仓库的主页面。
-
在文件列表右侧,单击 Packages(包)。
-
搜索并选择您的包。
-
在包登录页的右上角,单击 Package settings(包设置)。
-
在“Danger Zone(危险区域)”下,单击Delete this package(删除此包)。
-
要确认,请查看确认消息,输入您的包名称,然后单击 I understand, delete this package(我了解,删除此包)。
在 GitHub 上删除整个用户范围的包
要查看谁可以删除包,请参阅“必需权限”。
- 在 GitHub 上,导航到用户帐户的主页面。
- 在 GitHub 的右上角,单击您的个人资料照片,然后单击 Your profile(您的个人资料)。
- 在个人资料页面的右上角,单击 Packages(包)。
- 搜索并选择您的包。
- 在包登录页的右上角,单击 Package settings(包设置)。
- 在左侧,单击 Options(选项)。
- 在“Danger Zone(危险区域)”下,单击Delete this package(删除此包)。
- 要确认删除,请输入包名称,然后单击 I understand the consequences, delete this package(我明白后果,删除此包)。
在 GitHub 上删除整个组织范围的包
要查看谁可以删除包,请参阅“必需权限”。
- 在 GitHub 上,导航到组织的主页面。
- 在组织名称下,单击 Packages(包)。
- 搜索并选择您的包。
- 在包登录页的右上角,单击 Package settings(包设置)。
- 在左侧,单击 Options(选项)。
- 在“Danger Zone(危险区域)”下,单击Delete this package(删除此包)。
- 要确认删除,请输入包名称,然后单击 I understand the consequences, 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 天未过时才可恢复包。
您还必须满足这些权限要求之一:
- 对于仓库范围的包:您必须对拥有删除的包的仓库具有管理员权限。
- 对于用户帐户范围的包:您的用户帐户拥有已删除的包。
- 对于组织范围的包:您对拥有包的组织中删除的包具有管理员权限。
更多信息请参阅“必需权限”。
在包恢复后,包将使用与以前相同的名称空间。 如果相同的包名称空间不可用,您将无法恢复包。 在这种情况下,要恢复已删除的包,您必须先删除使用已删除包名称空间的新包。
恢复组织中的包
您可以通过组织帐户设置恢复已删除的包,只要该包位于您的一个仓库中或具有粒度权限,并且范围限于您的组织帐户。
要查看谁可以恢复组织中的包,请参阅“必需权限”。
- 在 GitHub 上,导航到组织的主页面。
- 在组织名称下,单击 Settings(设置)。
- 在左侧,单击 Packages(包)。
- 在“Deleted Packages(已删除的包)”下要恢复的包旁边,单击 Restore(恢复)。
- 要确认,请输入包名称,然后单击I understand the consequences, restore this package(我明白后果,恢复此包)。
恢复用户帐户范围的包
如果包在您的一个仓库中或范围限于您的用户帐,则您可以通过用户帐户设置恢复已删除的包。 更多信息请参阅“必需权限”。
- 在任何页面的右上角,单击您的个人资料照片,然后单击 Settings(设置)。
- 在左侧,单击 Packages(包)。
- 在“Deleted Packages(已删除的包)”下要恢复的包旁边,单击 Restore(恢复)。
- 要确认,请输入包名称,然后单击I understand the consequences, restore this package(我明白后果,恢复此包)。
恢复包版本
您可以从包的登录页面恢复包版本。 要查看谁可以恢复包,请参阅“必需权限”。
- 导航到包的登录页。
- 在右侧单击 Package settings(包设置)。
- 在左侧单击 Manage versions(管理版本)。
- 在右上角,使用“Versions(版本)”下拉菜单选择 Deleted(已删除)。
- 在您要恢复的已删除包版本旁边,单击 Restore(恢复)。
- 要确认,请单击 I understand the consequences, restore this version(我明白后果,恢复此版本)。