GitHub 上的程序包删除和还原支持
在 GitHub 上,如果您拥有所需的访问权限,则可以删除
- 整个私有程序包
- 整个公共程序包(如果程序包的任何版本下载量不超过 5000 次)
- 私有程序包的特定版本
- 公共程序包的特定版本(如果程序包版本下载量不超过 5,000 次)
注意
- 如果程序包的任何版本下载量超过 5,000 次,则无法删除公共程序包。在这种情况下,请通过 GitHub 支持门户 联系我们以获得进一步的帮助。
- 删除公共程序包时,请注意您可能会破坏依赖于您的程序包的项目。
在 GitHub 上,您还可以还原整个程序包或程序包版本,如果
- 您在删除后 30 天内还原程序包。
- 相同的包命名空间仍然可用,并且不会用于新包。
包 API 支持
GitHub 包仅支持使用个人访问令牌(经典版)进行身份验证。有关详细信息,请参阅“管理个人访问令牌”。
你可以使用 REST API 管理你的包。有关详细信息,请参阅“包的 REST API 端点”。
注意:GitHub Actions 工作流使用 REST API 删除和还原包的功能目前处于公测阶段,可能会发生更改。
对于支持细粒度权限的注册表,你可以在 GitHub Actions 工作流中使用 GITHUB_TOKEN
来使用 REST API 删除或还原包。令牌必须对包具有 admin
权限。如果你的工作流发布了一个包,则默认情况下会将 admin
角色授予存储工作流的存储库。对于未由工作流发布的现有包,你需要授予存储库 admin
角色,才能使用 GitHub Actions 工作流使用 REST API 删除或还原包。有关详细信息,请参阅“配置包的访问控制和可见性”。
对于某些注册表,你可以使用 GraphQL 删除私有包的版本。
你无法将 GitHub 包 GraphQL API 与支持细粒度权限的注册表一起使用。有关仅支持存储库范围权限且可与 GraphQL API 一起使用的注册表,请参阅“关于 GitHub 包的权限”。
删除或还原包所需的权限
对于支持细粒度权限的注册表,你可以选择允许将包限定为用户或组织,或链接到存储库。
要删除具有独立于存储库的细粒度权限的包,例如存储在 https://ghcr.io/NAMESPACE/PACKAGE-NAME
的容器映像或存储在 https://npm.pkg.github.com/NAMESPACE/PACKAGE-NAME
的包(其中 NAMESPACE
是包限定到的个人帐户或组织的名称),你必须具有对该包的管理权限。有关详细信息,请参阅“关于 GitHub 包的权限”。
对于从存储库继承其访问权限的包,如果你对存储库具有管理权限,则可以删除包。
某些注册表仅支持存储库范围的包。有关这些注册表的列表,请参阅“有关 GitHub Packages 的权限”。
删除包版本
在 GitHub 上删除存储库范围包的版本
要删除存储库范围包的版本,你必须具有包发布所在的存储库的管理员权限。有关详细信息,请参阅“必需的权限”。
-
在 GitHub.com 上,导航到存储库的主页。
-
在存储库的右侧边栏中,单击包。
-
搜索并单击要管理的包的名称。
-
在包的“最新版本”列表下,单击查看并管理所有版本。
-
在包列表中,找到要删除的包版本。
- 如果你的包是容器,请在包版本右侧单击 ,然后从下拉菜单中选择删除版本。
- 对于除容器之外的其他类型的包,请在包版本右侧单击删除。
-
要确认删除,请键入包名称,然后单击我理解后果,删除此版本。
使用 GraphQL 删除存储库范围包的版本
对于某些注册表,你可以使用 GraphQL 删除私有包的版本。
你无法将 GitHub Packages GraphQL API 与支持细粒度权限的注册表配合使用。有关仅支持存储库范围权限且可与 GraphQL API 配合使用的注册表,请参阅“有关 GitHub Packages 的权限”。有关改用 REST API 的信息,请参阅“包的 REST API 端点”。
在 GraphQL API 中使用 deletePackageVersion
突变。你必须使用具有 read:packages
、delete:packages
和 repo
范围的个人访问令牌(经典版)。有关个人访问令牌(经典版)的详细信息,请参阅“GitHub Packages 简介”。
以下示例演示如何使用 packageVersionId
为 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,可以通过 repository
对象使用 packages
连接。你需要一个具有 read:packages
和 repo
作用域的个人访问令牌(经典)。有关更多信息,请参阅 packages
连接或 PackageOwner
接口。
有关 deletePackageVersion
突变的更多信息,请参阅“突变”。
你无法直接使用 GraphQL 删除整个包,但如果你删除了包的每个版本,该包将不再显示在 GitHub 上。
在 GitHub 上删除用户范围包的版本
若要删除 GitHub 上用户范围包的特定版本,例如 ghcr.io
上的 Docker 镜像,请执行以下步骤。要删除整个包,请参阅“在 GitHub 上删除整个用户范围包”。
要查看谁可以删除包版本,请参阅“所需权限”。
-
在 GitHub 上,导航到个人帐户的主页。
-
在 GitHub 的右上角,单击你的个人资料照片,然后单击你的个人资料。
-
在个人资料页面中,在页眉中,单击 包选项卡。
-
搜索并单击要管理的包的名称。
-
在包的登陆页面上,在右侧,单击
在包的“最新版本”列表下,单击查看并管理所有版本。
在包列表中,找到要删除的包版本。
- 如果你的包是容器,请在包版本右侧单击 ,然后从下拉菜单中选择删除版本。
- 对于除容器之外的其他类型的包,请在包版本右侧单击删除。
在确认框中,输入软件包的名称以确认要删除其所选版本。
单击我了解后果,删除此版本。
在 GitHub 上删除组织范围软件包的版本
若要删除 GitHub 上组织范围软件包的特定版本(例如 ghcr.io
上的 Docker 映像),请使用以下步骤。若要删除整个软件包,请参阅“在 GitHub 上删除整个组织范围软件包”。
若要查看谁可以删除软件包版本,请参阅“删除或还原软件包所需的权限”。
-
在 GitHub 上,导航到组织的主页。
-
在组织名称下方,单击 包选项卡。
-
搜索并单击要管理的包的名称。
-
在包的登陆页面上,在右侧,单击