Git强制推送标记(当标记已存在于远程服务器上时)

Git强制推送标记(当标记已存在于远程服务器上时),git,git-tag,Git,Git Tag,我已经把一个标签推到遥控器上了。当另一个用户创建相同的标记并尝试推送时,推送将失败,因为远程设备上已经存在该标记 但是我想如果我做了--f force tag push,它应该会工作。但这不是我所看到的 我想我必须这么做 Create tag Push tag -> If push fails -> Delete tag on remote -> push tag again. 这是正确的吗?强行推标签不就是为了解决这

我已经把一个标签推到遥控器上了。当另一个用户创建相同的标记并尝试推送时,推送将失败,因为远程设备上已经存在该标记

但是我想如果我做了
--f force tag push
,它应该会工作。但这不是我所看到的

我想我必须这么做

 Create tag
 Push tag -> If push fails -> Delete tag on remote
                           -> push tag again.
这是正确的吗?强行推标签不就是为了解决这个问题吗

我将带注释的标记用于

 git -a v1.0 -f -m "message"

在我的例子中,当标签已经存在时,remote拒绝强制推送

所以,当推动被拒绝时,我做到了

git push --delete origin tagname 
然后按下新标签


请看Torek对我的问题的评论。在这种情况下,remote也可以拒绝删除。

这将强制推送所有标记并覆盖现有标记

git push -f --tags

首先,删除要在remote中替换的标记:

git push origin --delete <tag-name>

您是否尝试过使用git push origin:refs/tags/tag\u name之类的方法来删除远程标记?通常您可以强制推送标记,但远程可以不允许。通常,您可以删除遥控器上的标记,但遥控器也可以不允许这样做。如果遥控器足够严格,你必须让有直接访问权限的人来更新遥控器。也可以。我假设-f应该总是强制更新远程服务器上的标记。我将使用我添加的删除和重新创建逻辑来完成此操作。谢谢你的回答。这能回答你的问题吗?奇怪的是,
git-push-origin-f
在git 2.28上对我起了作用,回答得很好,谢谢。或者,如果您的遥控器未命名为“origin”,则不建议使用
git push-f--tags
这一操作,因为它将推送所有本地标记,并且通常会错误地创建过时的/仅本地的标记,而不应推送这些标记。
git push --tags