如何在GitLab或GitHub在线仓库中归档仓库的指定版本?
在GitHub/GitLab实现指定版本归档的在线存储
嘿,这个需求我刚好折腾过,其实GitHub和GitLab本身就内置了生成这种在线归档的能力,不用你手动生成归档再上传,当然如果你想自定义归档内容,也有办法。我给你分平台拆解下具体操作:
GitHub 实现方式
官方自动生成归档(推荐)
GitHub默认支持为仓库的任意标签、分支、commit哈希生成在线归档链接,完全不需要手动上传文件,格式如下:
https://github.com/<你的用户名>/<仓库名>/archive/<版本标识>.tar.gz # 或者用zip格式 https://github.com/<你的用户名>/<仓库名>/archive/<版本标识>.zip
- 如果你要指定标签版本(比如你例子里的3.4.6),直接把
<版本标识>换成标签名就行,比如https://github.com/opencv/opencv_contrib/archive/3.4.6.tar.gz就是这么来的; - 如果是指定某个commit,用完整哈希值或者前7位短哈希都可以;
- 如果是分支,直接写分支名(比如
main)就能生成该分支当前最新状态的归档。
手动上传自定义归档(可选)
要是你需要生成带有自定义内容的归档(比如排除某些文件),可以先本地用git archive生成归档文件:
git archive -o my-custom-archive.tar.gz v3.4.6
然后通过以下方式上传:
- 上传到Release附件:进入仓库的「Releases」页面,创建新版本(或编辑已有版本),在「Attach binaries by dropping them here or selecting them」区域上传归档文件,用户就能通过Release页面下载;
- 提交到仓库目录:把归档文件
git add、git commit后推送到仓库,但这种方式会占用仓库存储空间,不推荐用于大归档。
GitLab 实现方式
官方自动生成归档(推荐)
GitLab同样支持自动生成归档,链接格式略有不同:
https://gitlab.com/<你的用户名>/<仓库名>/-/archive/<版本标识>/<仓库名>-<版本标识>.tar.gz # zip格式同理 https://gitlab.com/<你的用户名>/<仓库名>/-/archive/<版本标识>/<仓库名>-<版本标识>.zip
用法和GitHub一致:<版本标识>可以是标签、分支名、commit哈希,比如标签v1.0.0的归档链接就是https://gitlab.com/yourname/yourrepo/-/archive/v1.0.0/yourrepo-v1.0.0.tar.gz。
手动上传自定义归档(可选)
和GitHub类似,先本地生成归档:
git archive -o my-custom-archive.tar.gz v1.0.0
然后:
- 上传到Release附件:进入仓库的「Releases」页面,创建或编辑版本,在「Assets」区域点击「Upload file」上传归档;
- 提交到仓库:同样可以把归档文件提交到仓库,但同样会增加仓库体积,谨慎使用。
总结一下,优先用官方自动生成的归档链接,既省心又不占用仓库空间,完全符合你例子里的那种归档形式~
内容的提问来源于stack exchange,提问作者user10796940
相关产品推荐
相关产品推荐

