我的"origin"存储库上有一些标签。然后我意识到我需要在其中一个标签上添加一些更改,并将它们推回到我的存储库中。有没有一种方法可以一次将现有标记推送到存储库,或者我应该删除之前的标记?
尽管您可以删除标记并将更改推送到远程repo,但这不应该是惯例。
git tag -d tag1
git push origin :refs/tags/tag1
因此,如果您需要将git分支(例如"master")上的标记(例如"v0.5" 您可能希望将 在按下之前删除任何遥控器上的标签 或者我们的例子: 替换标记以引用最近的提交(使用-f将另存为 或者我们的例子: 将标签推送到远程原点 或者我们的例子:-f
--force
Replace an existing tag with the given name (instead of failing)
-f
与-a
结合使用,以强制创建一个带注释的标记,而不是一个无注释的标记。示例
git push origin :refs/tags/<tagname>
$ git push origin master :refs/tags/v0.5
To git@github.com:org_name/repo_name.git
- [deleted] v0.5
git tag -d <tagname>
本地标记删除步骤)。git tag -fa <tagname>
$ git tag -fa "v0.5" -m "version 0.5"
Updated tag 'v0.5' (was f55c93f)
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
假设newtag
是新标签,oldtag
是旧标签。简单操作:
# Create new tag that points to the same of old tag
git tag newtag oldtag
# Remove oldtag
git tag -d oldtag
# Remove oldtag in remote machine
git push --delete origin oldtag
# Propapate newtag to remote machine
git push --tags
替换标记的更简单方法,也在远程:
git tag -f mytagname
git push -f --tags
我不确定我是否理解你的问题,但听起来最简单的方法是删除标签,推送你的更改,然后重新添加标签。。。