我在主分支上创建了一个名为v0.1的标签,如下所示:
git tag -a v0.1
但后来我意识到,在0.1版的master中还需要合并一些更改,所以我就这么做了。但是现在我的v0.1标签被粘在了错误的提交上(引用便利贴的类比)。我希望它卡在主节点上的最近提交上,但它却卡在主节点上的第二个最近提交上。
我如何移动它到最近提交的主?
我在主分支上创建了一个名为v0.1的标签,如下所示:
git tag -a v0.1
但后来我意识到,在0.1版的master中还需要合并一些更改,所以我就这么做了。但是现在我的v0.1标签被粘在了错误的提交上(引用便利贴的类比)。我希望它卡在主节点上的最近提交上,但它却卡在主节点上的第二个最近提交上。
我如何移动它到最近提交的主?
当前回答
这里我只留下适合我需要的另一种形式的命令。 我想移动一个标记v0.0.1.2。
$ git tag -f v0.0.1.2 63eff6a
Updated tag 'v0.0.1.2' (was 8078562)
然后:
$ git push --tags --force
其他回答
总结一下,如果你的远程名为origin并且你正在主分支上工作:
git tag -d <tagname> # delete the old tag locally
git push origin :refs/tags/<tagname> # delete the old tag remotely
git tag <tagname> <commitId> # make a new tag locally
git push origin <tagname> # push the new local tag to the remote
描述:
第1行删除本地env中的标记。 第2行删除远程环境中的标记。 第3行将标记添加到不同的提交 第4行将更改推到远程
您还可以将第4行更改为git push origin——tags,以将所有本地标记更改/更新推到远程repo。
上面的答案是基于@eedeep的问题内容,以及Stuart Golodetz、Greg Hewgill和@ben-hocking的回答,以及他们的回答下面的评论,以及@NateS在我的回答下面的原始评论。
使用git标记-d <tagname>删除它,然后在正确的提交时重新创建它。
如果期望的最终结果是更新远程上已经存在的标签的内容:
Git checkout <tag_name> 提交您的更改 Git标签-f <tag_name> Git push -f origin <tag_name>
这里我只留下适合我需要的另一种形式的命令。 我想移动一个标记v0.0.1.2。
$ git tag -f v0.0.1.2 63eff6a
Updated tag 'v0.0.1.2' (was 8078562)
然后:
$ git push --tags --force
对git标签使用-f选项:
-f
--force
Replace an existing tag with the given name (instead of failing)
您可能希望将-f与-a结合使用,以强制创建一个带注释的标记,而不是无注释的标记。
例子
在按之前,请删除任何遥控器上的标签 Git push origin:refs/tags/<tagname> 替换标记以引用最近的提交 Git标签-fa <tagname> 将标签推到远端原点 Git push origin master——tags