当标签已存在于遥控器上时,Git强制推送标签

use*_*175 27 git git-tag

我已将标签推入遥控器,当另一个用户创建相同的标签并尝试推送时,推送将失败,因为标签已存在于遥控器上.

但我想如果我做 - 强制标签推送,它应该是工作.但这不是我所看到的.

我想我必须这样做.

 Create tag
 Push tag -> If push fails -> Delete tag on remote
                           -> push tag again.
Run Code Online (Sandbox Code Playgroud)

它是否正确?Isnt force push标签应该照顾这个吗?

我正在使用带注释的标签

 git -a v1.0 -f -m "message"
Run Code Online (Sandbox Code Playgroud)

谢谢你的期待.

use*_*175 41

就我而言,当标签已经存在时,远程拒绝强制推送.

因此,当推动被拒绝时,我做到了

git push --delete origin tagname 
Run Code Online (Sandbox Code Playgroud)

并推了新标签.

请参阅Torek对我的问题的评论.有一种情况,远程也可以拒绝删除.


小智 25

首先,更新本地的标签:

git tag v0.6.0 -f
Updated tag 'v0.6.0' (was cb85425)
Run Code Online (Sandbox Code Playgroud)

然后更新远程上的标签:

git push origin v0.6.0 -f
Total 0 (delta 0), reused 0 (delta 0)

 + cb85425...bf17993 v0.6.0 -> v0.6.0 (forced update)
Run Code Online (Sandbox Code Playgroud)

  • 应该是公认的答案,问题询问的是“A tag”而不是“ALL Tags”。 (2认同)

小智 19

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

git push -f --tags
Run Code Online (Sandbox Code Playgroud)

  • 不建议这样做,因为它会推送所有本地标签,并且通常会错误地创建不应该推送的陈旧/仅限本地标签。 (7认同)
  • 很好的答案,谢谢。或者,如果您的遥控器未命名为“origin”,则`git push <remote name> -f --tags` (2认同)

The*_*eff 8

我建议不要强制推送所有标签 - obv。这种力量推动每个本地标签覆盖遥控器。在用移动标签表示状态的情况下或者如果稍后添加任何此类功能,这可能会造成损害。

要强制推送/覆盖您关心的一个标签而不是所有标签..请执行以下操作:

git push origin 标签名 -f