用Git替换远程标签。

9 浏览
0 Comments

用Git替换远程标签。

我在我的“原始”存储库上有一些标签。然后我意识到我需要在其中一个标签上添加一些更改,并将它们推回我的存储库。

是否有一种方法可以一次将现有标签推送到存储库中,还是应该先删除标签?

admin 更改状态以发布 2023年5月21日
0
0 Comments

所以,如果您需要将git分支(如“master”)上的标记(例如“v0.5”)移动到不同的提交位置,可能是更新的位置,则可以使用-f选项来使用git tag

-f
--force
Replace an existing tag with the given name (instead of failing)

您可能需要与-a一起使用-f来强制创建带注释的标记,而不是非注释的标记。

示例

  1. 在推送之前删除任何远程标记

    git push origin :refs/tags/
    

    或者对于我们的示例:

    $ git push origin master :refs/tags/v0.5
    To git@github.com:org_name/repo_name.git
    - [deleted]         v0.5
    

  2. 将标记替换为引用最新的提交(使用-f将保存为git tag -d 局部标记删除步骤)。

    git tag -fa 
    

    或者对于我们的示例:

    $ git tag -fa "v0.5" -m "version 0.5"
    Updated tag 'v0.5' (was f55c93f)
    

  3. 将标记推送到远程origin

    git push origin --tags
    

    或者对于我们的示例:

    $ git push origin master --tags
    Counting objects: 1, done.
    Writing objects: 100% (1/1), 196 bytes | 0 bytes/s, done.
    Total 1 (delta 0), reused 0 (delta 0)
    To git@github.com:org_name/repo_name.git
    * [new tag]         v0.5 -> v0.5
    

0
0 Comments

这不应该是最佳实践,尽管您可以删除标签并将更改推送到远程仓库。

git tag -d tag1
git push origin :refs/tags/tag1

0