在github上交换“最新版本”

我在github上有一个仓库。

这是图表: 在这里输入图像描述

这是我的动作序列:

  • 进行5次提交并推送它们

  • 添加标签v0.2.0git tag -a v0.2.0 -m "release 0.2.0"

  • 推动标签( git push --tags origin master

  • 通过在github网站上草拟新的发布按钮来发布发布。 我选择了v0.2.0标签并获得了https://github.com/n1k1ch/PrototypeGit/releases/tag/v0.2.0

  • 添加一个标签到以前的提交( git tag -a v0.1.0 b217332279 -m "release 0.1.0"

  • 推动标签( git push --tags origin master

  • 通过使用v0.2.0标签草稿发布新版本,并获得https://github.com/n1k1ch/PrototypeGit/releases/tag/v0.1.0

  • 所以,v0.1.0标签成为最新版本

    题:

    我能否将v0.1.0版本与v0.2.0版本交换,以使v0.2.0成为最新版本


    PS谷歌搜索“github交换释放”没有帮助


    编辑:

    感谢@Chris,我做到了。 一个小笔记 - 在Windows上我使用:

    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重新定时

    我打开v0.1.0并按发布发布结果是: 最新版本“交换”


    我还收到了来自support@github.com的答案:

    这是预期的行为。 我们将在您的v0.1.0发行日期之前,而不是最后一次提交的日期。 以下是一篇关于更改注释标签日期的好博客文章:http://sartak.org/2011/01/replace-a-lightweight-git-tag-with-an-annotated-tag.html


    我不知道有什么方法直接在GitHub中执行此操作。 “最新版本”是根据您的标签上的时间戳确定的,而不是其名称的语义。

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

    git tag -d v0.1.0
    git push --delete origin v0.1.0
    

    并用假日期重新创建它:

    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的manpage中有记录:

    在追溯标签

    如果您从其他VCS导入了一些更改,并且希望为主要版本添加标签,则可以指定嵌入标签对象内的日期; 例如,标签对象中的这些数据会影响gitweb界面中标签的排序。

    要设置未来标记对象中使用的日期,请设置环境变量GIT_COMMITTER_DATE(请参阅后面对可能值的讨论;最常见的形式是“YYYY-MM-DD HH:MM”)。

    例如:

    $ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
    

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

    关于重新标记

    当你标记错误提交并且你想要重新标记时,你应该怎么做?

    如果你从未推出任何东西,只需重新标记即可。 用“-f”替换旧的。 你完成了。

    但是如果你推出了一些东西(或者其他人可以直接读取你的存储库),那么其他人就会看到旧的标签。 在这种情况下,您可以执行以下两件事之一:

  • 理智的事情。 只要承认你搞砸了,并使用不同的名字。 其他人已经看到一个标签名称,如果你保持相同的名称,你可能处于两个人都拥有“版本X”的情况,但他们实际上有不同的“X”。 所以把它叫做“X.1”,并且用它来完成。

  • 疯狂的事情。 即使其他人已经看过旧版本,你也确实想要叫新版本“X”。 所以git tag -f again使用git tag -f again ,就好像你还没有发布旧的。

  • 但是,Git不会( 也不应该)更改用户背后的标签。 所以如果有人已经拿到了旧标签,那么在树上做一个git pull不应该让它们覆盖旧标签。

    如果有人从您那里获得发布标签,您不能只更新自己的标签来更改标签。 这是一个很大的安全问题,因为人们必须能够信任他们的标签名称。 如果你真的想要做这个疯狂的事情,你只需要付诸行动,并告诉人们你搞砸了。 你可以通过发表一个非常公开的声明来说明:

    好吧,我搞砸了,我推出了一个标记为X的早期版本。然后我修正了一些问题,并重新将固定树重新标记为X.

    如果你得到错误的标签,并且想要新标签,请删除旧标签并通过执行以下操作来获取新标签:

    git tag -d X  
    git fetch origin tag X
    

    获取我的更新标签。

    你可以测试你的标签

    git rev-parse X
    

    这应该返回0123456789abcdef ..如果你有新版本。

    抱歉给你带来不便。

    这看起来有点复杂吗? 应该是。 没有办法自动“修复”它是不正确的。 人们需要知道他们的标签可能已被更改。

    如果您的项目相对孤立,并且您可以可靠地联系可能正在使用代码的所有人,我只会重复使用相同的标记。

    有关删除远程标签的更多详细信息,请参阅此问题。

    链接地址: http://www.djcxy.com/p/49287.html

    上一篇: Swap "Latest release" on github

    下一篇: How can I delete a remote tag in eGit?