GitHub git 标签而不创建 zip 文件?

标签 github

我正在寻找一种方法,让用户可以通过 raw.githubusercontent.com 访问特定版本存储库的数据,而无需大幅增加已经非常大的存储库的大小。

上下文:我有一个 GitHub 存储库,其中包含由文本重用算法创建的大量数据。 相同的算法每年在发生变化的文本语料库上运行两次,因此此存储库中的数据每年更改两次。

为了允许访问特定版本的文本重用数据,我正在考虑使用标签;根据我的理解,标签只是指向特定提交的指针,因此它不应该显着增加存储库的大小。

但是,根据我运行的实验(见下文),情况似乎并非如此:当我将标签推送到 GitHub 时,它还会创建一个包含提交时的完整数据的 zip 文件。即使我还没有将该提交推送到 GitHub,即使我使用轻量级标签格式,它也会执行此操作。看来这会极大地增加我的 GitHub 存储库的大小。

有没有办法在不创建 .zip 文件的情况下添加标签?

如果没有,我正在考虑在每次运行算法时创建一个新分支;该分支不会被更新,而仅充当指向该特定提交的指针。这会增加存储库的大小吗?使用分支还有其他缺点吗?

实验:

设置实验:

  • 创建一个测试存储库并克隆它
  • 在其中创建一个文件,内容为“DUMMY DATA – V1”
  • 添加并提交

第 1 步:带注释的标签

  • 创建带注释的标签:git tag -a v1.0 -m "First version with dummy data"
  • 将存储库推送到 GitHub:git push origin main
  • 这仅将新文件推送到存储库,而不是标签;标签必须单独推送:git push origin v1.0
  • 现在该标 checkout 现在 GitHub 上;它与一个 zip 文件关联,该文件包含内容为“DUMMY DATA – V1”的文件
  • 检查是否可以使用 raw.githubusercontent 访问该文件(几分钟后即可正常工作):https://raw.githubusercontent.com////

第2步:带注释的标签,先推送标签

  • 更改文件:将内容更改为“DUMMY DATA – V2”
  • 添加并提交文件
  • 添加新的带注释标签:git tag -a v2.0 -m "Second version with new dummy data"
  • 这一次,我们将在推送提交之前推送标签:git push origin v2.0
  • 新标 checkout 现在 GitHub 上,并且与一个 .zip 文件关联,该文件包含内容为“DUMMY DATA – V2”的文件;在GitHub上的repo中,该文件仍然具有原始内容“DUMMY DATA – V1” => 因此,zip 文件不是由 GitHub 在服务器上创建的,而是在推送标签的过程中创建的!
  • 推送提交:git push origin main

第 3 步:轻量级标签

  • 更改文件:将内容更改为“DUMMY DATA – V3”
  • 添加并提交文件
  • 创建一个所谓的轻量级标签(省略“-a”标志和消息):git tag v3.0
  • 再次,我们在推送提交之前推送标签:git push origin v3.0
  • 与步骤 2 中发生的情况相同:新标 checkout 现在 GitHub 上,并且与包含内容为“DUMMY DATA – V3”的文件的 .zip 文件关联;在 GitHub 上的存储库中,该文件仍然包含内容“DUMMY DATA – V2”=> 轻量级标签并不那么轻量级:它们还会创建一个 zip 文件!

最佳答案

GitHub 提供了下载 tarball 或 zip 文件的功能,该文件是根据给定状态的存储库快照自动生成的。这些链接会在网络界面中自动提供,并且这些文件是按需创建的:如果没有人请求它们,那么它们将永远不会被生成。

当您标记某个提交并推送该标记但不推送该提交的分支时,该提交仍会被推送。如果您不这样做,标签将悬空并指向不存在的提交,并且存储库将被损坏。因此,在每种情况下,您总是会推送属于标记一部分的提交。

您可以使用 git archive 在您自己的计算机上创建这些文件。例如,如果您想创建 v1 的存档,您可以执行 git archive --format=zip -o v1.zip --prefix=v1/ v1.0 .

关于GitHub git 标签而不创建 zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72025963/

相关文章:

git - 如何为 TeamCIty 中的未决更改编写 git 日志

git - 在 pull 时使用 Git pull 显示文件名?

github - git fetch 不适用于获取新文件

android - 如何使用 Jenkins、github 和 android studio

node.js - npmpublish 命令是否提交更改?

git - GitHub 可以自动 merge 分支吗?

github - 当拉取请求源分支具有特定前缀时运行 Github 操作

git - git reset --hard HEAD^ 与 git reset --hard HEAD 之间的区别?

java - GitHub 上托管的 maven 项目的 groupId

python - 在不正确的 merge 之前了解用于硬重置的pycharm提交日志