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