源代码存档概述
可以从 GitHub 下载任何分支、标记或特定提交的快照。 这些快照由 git archive
命令生成,有两种格式:tarball 或 zipball。 快照不包含整个存储库历史记录。 如果需要完整的历史记录,可以克隆存储库。 有关详细信息,请参阅“克隆仓库”。
下载源代码存档
可以通过三种方式下载源代码存档。
从存储库视图下载源代码存档
-
在 GitHub 上,导航到存储库的主页面。
-
在文件列表上方,单击 “代码”。
-
单击“ 下载 ZIP”。
从版本下载源代码存档
-
在 GitHub 上,导航到存储库的主页面。
-
在文件列表右侧,单击“发布”。
-
向下滚动到版本的“资产”部分。
-
若要下载源代码,请单击“ 源代码(zip)”或“ 源代码(tar.gz)”。
从标记下载源代码存档
-
在 GitHub 上,导航到存储库的主页面。
-
在文件列表右侧,单击“发布”。
-
在“版本”页面顶部,单击“标记”。
-
若要下载源代码,请单击“ 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 与 :ref
的提交 ID。 使用提交 ID 可确保始终在存档内获得相同的文件内容,并且不受存储库重写标记或移动分支头的影响。
如果你依赖于存档的稳定性来确保安全(例如:确保不会尝试解压缩恶意制作的文件),我们建议使用版本而不是源下载。 有关详细信息,请参阅“关于发行版”。
你可以使用类似于此第三方 GitHub 操作的方法,创建这些文件并在发布流程中进行推送。 之后可以使用发布资产 REST API 来检索它们。