跳至主要内容

下载源代码存档

你可以下载存储库中代码的快照。

源代码存档概述

你可以从 GitHub.com 下载任何分支、标签或特定提交的快照。这些快照由 git archive 命令 以 tarball 或 zipball 两种格式之一生成。快照不包含整个存储库历史记录。如果你想要整个历史记录,你可以克隆存储库。有关详细信息,请参阅“克隆存储库”。

下载源代码存档

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

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

  1. 在 GitHub.com 上,导航到存储库的主页。

  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.com 上,导航到存储库的主页。

  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.com 上,导航到存储库的主页。

  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 会在更改压缩设置之前至少提前六个月发出通知。
  • 存储库的名称是存档内目录结构的一部分。因此,如果存储库名称更改,根目录名称也将更改。

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

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

您可以使用类似 此第三方 GitHub 操作 的内容,作为发布流程的一部分来创建和推送这些文件。稍后可以使用 发布资产 REST API 检索它们。