我在“origin”代码库中有一些标签。 然后我意识到我需要对其中一个标签进行一些更改,并将其推送回我的代码库。 是否可以一次性将现有标签推送到代码库中,还是应该先删除标签?
虽然您可以删除该标签并将更改推送到远程仓库,但这不应该成为常规做法。
git tag -d tag1
git push origin :refs/tags/tag1
--follow-tags
,对我来说这是行不通的:git push --follow-tags origin :refs/tags/stage
。 - Mark所以如果你需要将一个标签(例如:"v0.5")从一个Git分支(例如:"master")移动到另一个提交,可能是一个更新的提交,那么你可以使用-f
选项来使用git tag
命令:
-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
将标签替换为引用最近的提交(使用 -f 将保存为 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
无法将一些引用推送到'gitserver....'
- undefined假设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 -d oldtag
,git push --delete origin oldtag
) 并创建新标签 (git tag -a newtag HASH
,git push --tags
)。 - somenxavier替换标签的更简单方法,可用于远程:
git tag -f mytagname
git push -f --tags
我不确定我理解你的问题,但听起来最简单的方法是删除标签,推送你的更改,然后重新添加标签...