跳至主要内容

下载源代码存档

您可以下载仓库中代码的快照。

源代码存档概述

您可以下载 GitHub 上任何分支、标签或特定提交的快照。这些快照由git archive 命令以两种格式之一生成:tarball 或 zipball。快照不包含整个仓库历史记录。如果您需要整个历史记录,可以克隆仓库。更多信息,请参阅“克隆仓库”。

下载源代码存档

您可以通过三种方式下载源代码存档。

从仓库视图下载源代码存档

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

  2. 在文件列表上方,单击 代码.

    Screenshot of the list of files on the landing page of a repository. The "Code" button is highlighted with a dark orange outline.

  3. 单击 下载 ZIP.

从发行版下载源代码存档

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

  2. 在文件列表的右侧,单击**发行版**。

    Screenshot of the main page of a repository. A link, labeled "Releases", is highlighted with an orange outline.

  3. 向下滚动到发行版的“资源”部分。

  4. 要下载源代码,请单击 **源代码 (zip)** 或 源代码 (tar.gz).

从标签下载源代码存档

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

  2. 在文件列表的右侧,单击**发行版**。

    Screenshot of the main page of a repository. A link, labeled "Releases", is highlighted with an orange outline.

  3. 在“发行版”页面顶部,单击**标签**。

  4. 要下载源代码,请单击 **zip** 或 tar.gz.

    Screenshot of the "Tags" page of a repository. The zip and tar.gz options are outlined in dark orange.

源代码存档URL

每个仓库都有特定 URL 可用的源代码存档。例如,考虑仓库github/codeql。下载分支、标签或特定提交 ID 的 URL 不同。

存档类型示例URL
分支mainhttps://github.com/github/codeql/archive/refs/heads/main.tar.gz
标签codeql-cli/v2.12.0https://github.com/github/codeql/archive/refs/tags/codeql-cli/v2.12.0.zip
提交aef66c4https://github.com/github/codeql/archive/aef66c462abe817e33aad91d97aa782a1e2ad2c7.zip

注意

您可以在上面的 URL 中使用.zip.tar.gz 分别请求 zipball 或 tarball。

源代码存档的稳定性

源代码存档是在请求时生成的,缓存一段时间后会被删除。如果将来再次请求相同的存档,它将被重新生成。了解 GitHub 对源代码存档的保证非常重要。

  • 提交 ID 的存档在每次请求时都将具有相同的文件内容,假设提交 ID 仍在仓库中并且仓库的名称没有更改。
  • 由于分支和标签可以移动到不同的提交 ID,因此将来下载的存档可能与以前下载的相同分支或标签的存档具有不同的内容。假设分支或标签仍然指向相同的提交 ID,它将具有相同的文件内容。
  • 用于生成 zipball 或 tarball 的精确压缩设置可能会随着时间的推移而发生变化。如果分支或标签没有更改,则解压缩的内容不会更改,但外部压缩存档可能具有不同的字节布局。GitHub 更改压缩设置前至少会提前六个月通知。
  • 仓库的名称是存档内目录结构的一部分。因此,如果仓库名称更改,根目录名称也将更改。

如果您依赖源代码存档的稳定性来实现可重复性(确保您始终获得存档内的相同文件),我们建议使用带有提交 ID 的:ref存档 REST API。使用提交 ID 可确保您始终获得存档内相同的文件内容,并且您将不受仓库重写标签或移动分支头的影响。

如果您依赖存档的稳定性来确保安全性(例如:确保您不会尝试解压缩恶意制作的文件),我们建议使用发行版而不是使用源代码下载。更多信息,请参阅“关于发行版”。

您可以使用类似于此第三方 GitHub action 的工具,在您的发布流程中创建和推送这些文件。发行版资源 REST API 稍后可用于检索它们。