首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在github上交换“最新版本”

在github上交换“最新版本”
EN

Stack Overflow用户
提问于 2014-04-02 20:40:44
回答 2查看 12.8K关注 0票数 33

我有一个github上的存储库

这是一个图表:

这是我的动作顺序:

  1. 使5提交并推送它们
  2. 添加标记v0.2.0 (git tag -a v0.2.0 -m "release 0.2.0")
  3. 推送标签(git push --tags origin master)
  4. 通过在github站点上起草一个新的发布按钮来发布。我选择了v0.2.0标记并获得了https://github.com/n1k1ch/PrototypeGit/releases/tag/v0.2.0
  5. 向上一次提交添加一个标记(git tag -a v0.1.0 b217332279 -m "release 0.1.0")
  6. 推送标签(git push --tags origin master)
  7. v0.1.0标记和https://github.com/n1k1ch/PrototypeGit/releases/tag/v0.1.0编写一个新版本

因此,v0.1.0标记成为最新版本的

问题:

我是否能够将v0.1.0版本与v0.2.0版本交换,将v0.2.0变成最新版本

P.S. 谷歌"github交换版“没有帮忙

编辑:

多亏了克里斯,我做到了。在我使用的Windows上,有一个小便条:

代码语言:javascript
运行
复制
SET GIT_COMMITTER_DATE="2014-04-02 23:00"
git tag -a v0.1.0 b217332279 -m "release 0.1.0"
git push --tags origin master

只是如果有人感兴趣,在这之后,我看到如下:

我打开了v0.1.0并发布了新闻发布,结果是:

此外,我还收到了support@github.com的答复:

这是预期的行为。我们将按您的版本0.1.0发布日期,而不是上次提交的日期进行。这里有一篇关于更改带注释的标记日期的好博客文章:http://sartak.org/2011/01/replace-a-lightweight-git-tag-with-an-annotated-tag.html

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-03 12:37:18

我不知道在GitHub中有什么方法可以直接做到这一点。“最新版本”是根据标签上的时间戳来确定的,而不是根据其名称的语义确定的。

在过去,我通过删除有问题的旧标签来解决我自己的个人项目中的这个问题:

代码语言:javascript
运行
复制
git tag -d v0.1.0
git push --delete origin v0.1.0

然后用一个假的约会来重现:

代码语言:javascript
运行
复制
GIT_COMMITTER_DATE="2013-12-31 00:00" git tag -a v0.1.0.1 b217332279 -m "release 0.1.0.1"
git push --tags origin master

这在git-tag中有记录。

关于回溯标签 如果您已经从另一个VCS中导入了一些更改,并且希望为工作的主要版本添加标记,那么可以指定嵌入标记对象的日期是有用的;标记对象中的这些数据会影响例如gitweb接口中标签的排序。 若要设置未来标记对象中使用的日期,请设置环境变量GIT_COMMITTER_DATE (请参阅后面对可能值的讨论;最常见的形式是“YYYY:MM”)。 例如: $ GIT_COMMITTER_DATE="2006-10-02 10:31“git标记-s v1.0.1

请注意,这个相同的手册页强烈建议不要重用相同的标记名:

关于重新标注 当你标记一个错误的提交并且你想要重新标记时,你应该做什么? 如果你从来没有把任何东西推出来,那就重新贴上标签。使用"-f“替换旧的。你就完蛋了。 但是,如果您已经将其推开(或者其他人可以直接读取您的存储库),那么其他人就已经看到了旧的标记。在这种情况下,您可以做两件事中的一件:

  1. 理智的事情。承认你搞砸了,换个名字。其他人已经见过一个标签名,如果你保持相同的名字,你可能会遇到两个人都有“X版”的情况,但他们实际上有不同的“X",所以就把它叫做"X.1”,然后用它来完成。
  2. 疯狂的事情。你真的很想把新版本叫做"X“,尽管其他人已经看过旧版本了。所以,只需使用git tag -f again,就好像您还没有发布旧的版本一样。

但是,Git做的是而不是(也不应该)改变用户背后的标记。因此,如果有人已经得到了旧的标记,那么在树上执行git pull不应该只是让他们覆盖旧的标记。

如果有人从你那里得到了一个发布标签,你不能仅仅通过更新你自己的标签来为他们更改标签。这是一个很大的安全问题,因为人们必须能够信任他们的标签名。如果你真的想做一件疯狂的事,你就得承认,告诉别人你搞砸了。你可以通过发布一个非常公开的声明来做到这一点:

好的,我搞砸了,我推出了一个标记为X的早期版本,然后我修复了一些东西,并将固定的树重新定位为X。

如果您得到了错误的标记,并想要新的标记,请删除旧的标记,并通过以下操作获取新的标记:

git标签-d X git获取源标记X

才能得到我最新的标签。

您可以通过以下操作来测试您拥有的标记

git rev-解析X

哪个应该返回0123456789abc..。如果你有新版本。

很抱歉给您带来不便。

这看起来有点复杂吗?它应该是。仅仅自动“修复”它是不可能的。人们需要知道他们的标签可能已经改变了。

如果您的项目相对独立,并且您可以可靠地与可能使用代码的每个人联系,我才会重用相同的标记。

有关删除远程标记的更多细节,请查看这个问题

票数 29
EN

Stack Overflow用户

发布于 2020-10-29 20:40:47

除了Chris的回答之外,请注意,如果您像他提到的那样重新发布标记,但随后在GitHub上编辑描述,这将使它再次成为最新的标签。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22822586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档