源码存档概览
您可以下载 GitHub 上任意分支、标签或特定提交的快照。这些快照由 git archive 命令 生成,提供两种格式:tarball 或 zipball。快照不包含完整的仓库历史记录。如果您需要完整历史,可以克隆仓库。更多信息请参见 克隆仓库。
下载源码存档
您可以通过三种方式下载源码存档。
从仓库视图下载源码存档
-
在 GitHub 上,导航至仓库的主页面。
-
在文件列表上方,点击 代码。

-
点击 下载 ZIP。
从发布页面下载源码存档
-
在 GitHub 上,导航至仓库的主页面。
-
在文件列表的右侧,点击 Releases。

-
向下滚动至该发布的 “Assets(资产)” 部分。
-
要下载源码,点击 源码(zip) 或 源码(tar.gz)。
从标签下载源码存档
-
在 GitHub 上,导航至仓库的主页面。
-
在文件列表的右侧,点击 Releases。

-
在 Releases 页面顶部,点击 Tags。
-
要下载源码,点击 zip 或 tar.gz。

源码存档 URL
每个仓库都有对应的源码存档 URL。例如,考虑仓库 github/codeql。下载分支、标签或特定提交 ID 的 URL 各不相同。
注意
您可以在上述 URL 中使用 .zip 或 .tar.gz,分别请求 zipball 或 tarball。
源码存档的稳定性
源码存档是在请求时生成的,会缓存一段时间,然后被删除。如果将来再次请求相同的存档,它会重新生成。理解 GitHub 对源码存档的保证非常重要。
- 只要提交 ID 仍在仓库且仓库名称未更改,使用提交 ID 的存档每次请求时都会拥有相同的文件内容。
- 由于分支和标签可以指向不同的提交 ID,未来对同一分支或标签的下载可能会得到与之前不同的内容。只要分支或标签仍指向同一提交 ID,文件内容保持一致。
- 生成 zipball 或 tarball 使用的具体压缩设置可能随时间变化。只要分支或标签未变,解压后的内容不会变化,但外层压缩文件的字节布局可能不同。GitHub 在更改压缩设置前会至少提前六个月通知。
- 仓库名称是存档内部目录结构的一部分。因此,如果仓库名称变更,根目录名称也会随之改变。
如果您在可重复性(确保每次获得的存档内部文件完全相同)方面依赖源码存档的稳定性,建议使用 存档 REST API 并使用提交 ID 作为 :ref。使用提交 ID 可确保每次获取的存档内部文件内容相同,并且可以避免仓库改写标签或移动分支指针的情况。
如果您在安全性方面依赖存档的稳定性(例如:确保不会解压恶意构造的文件),我们建议使用发布(releases)而不是直接下载源码。更多信息请参见 关于发布。
您可以使用 此第三方 GitHub Action 在发布流程中创建并推送这些文件。随后可使用 Release Assets REST API 获取它们。